사전캠프/달리기반

달리기반 Lv.2 팩토리얼 계산

서보훈 2024. 8. 13. 16:50

  • 사용자로부터 입력받은 숫자의 팩토리얼을 계산하는 프로그램을 작성하세요.
    • 팩토리얼은 n!로 표현되며, n! = n × (n-1) × (n-2) × ... × 1입니다.
    • 예를 들어, 5! = 5 × 4 × 3 × 2 × 1 = 120입니다.
    • for, while, do-while문 중 하나를 활용하여 해결해주세요.
    • Console.ReadLind() 을 활용해서 출력 값을 출력해주세요.
Enter a number: 5
Factorial of 5 is 120

 

 

값을 입력받고, 입력받은 값의 팩토리얼값을 반환하는 프로그램을 작성해야합니다.

사용자로부터 값을 입력받을때, 줄넘김을 하지 않기 위해서 Console.Write를 사용합니다.

//사용자로부터 입력 받기
Console.Write("Enter a number : ");
string input = Console.ReadLine();

입력을 받으면 결과를 다음줄에 출력해야하기 때문에 ReadLine()을 사용해야 합니다.

입력받은 값을 정수형으로 변환해줍니다.

//입력값을 정수형으로 변환
int inputNumber = Convert.ToInt32(input);

만약 정수형을 입력하지 않을경우, 이 부분에서 오류가 발생하여 프로그램이 동작하지 않습니다.

정수형 이외의 입력시 작동을 원할경우, 예외처리를 해 줄 필요가 있습니다.

 

팩토리얼 계산을 저장할 변수를 선언하고 팩토리얼 계산을 실행합니다.

//결과값 선언, 0일경우 곱셈으로 0이 되기 때문에 1로 선언
int FactorialNum = 1;

//팩토리얼 계산
for(int i = 0; i < inputNumber; i++)
{
    //자기자신에, 입력값 - 반복횟수 만큼 반복
    FactorialNum *= (inputNumber - i);
}

팩토리얼 계산은 곱셈으로 실행하기 때문에, 초기값을 0으로 설정할경우 결과값이 0으로만 발생하게 됩니다.

따라서 초기값을 1로 설정해 줄 필요가 있습니다.

 

또한 입력값이 음수값인경우 반복문이 수행되지 않고 기본값인 1을 출력하게 됩니다.

마찬가지로, 입력한 값을 정수형으로 변환할 때 예외처리를 해 줄 필요가 있습니다.

 

마지막으로 결과값을 출력합니다.

//결과값 출력
Console.WriteLine($"Factorial of {inputNumber} is {FactorialNum}");

5을 입력하면 5의 팩토리얼값인 120을,

6을 입력하면 6의 팩터리얼값인 720을 출력하는것을 확인하실수 있습니다.


 

int inputNumber = (int.TryParse(input, out inputNumber)) ? inputNumber : -1;

//예외처리
if(inputNumber <= 0)
{
    Console.WriteLine("Wrong Input");
    return;
}

 

 

tryParse() 를 사용해 예외처리를 한 경우 입니다.

return을 사용해 잘못된 구문이 들어온 경우, Wrong Input 을 출력하고 프로그램이 종료되도록 처리하였습니다.