코딩테스트

코딩테스트 팩토리얼

김도현2 2023. 6. 4. 15:43
반응형

코딩테스트 팩토리얼

 

 

문제 설명

 

 

출력 예시

 

 

무작위 정수 n이 주어집니다.

그 n 팩토리얼중 가장 큰 숫자를 출력하세요!

 

예를 들어 n에 정수 7이 들어온다면 팩토리얼은 1*2*3 이므로 팩토리얼에서 가장 큰 숫자는 3 입니다.

바로 풀이 들어가보겠습니다~

 

 

let n = 3628800;
var answer = 1;
let sum = 1;

while(true){
	
}


//10

변수 n이 얼마가 들어올지 정확하게 모르니 while문을 쓰겠습니다.

 

 

 

 

let n = 3628800;
var answer = 1;
let sum = 1;

while(true){
	sum *= answer	
	if(sum * answer < n){	//다음 팩토리얼 정수가 n보다 작을시 answer++
    answer++
	} else {
    break;
	}
}


//10

그냥 for문을 사용하게 되면 후치 증감식으로 인해 answer 변수가 원하던 정수보다 오버가 되어 조건문을 사용했습니다!

이렇게 쓰면 제가 원하는 팩토리얼 정수에서 딱 멈추어 출력 할 수 있습니다~

 

while문 안에서는 이렇게 디버깅되고 있습니다.

 

1*2 = 2

1*2*3 = 6

1*2*3*4 = 24

1*2*3*4*5 = 120

1*2*3*4*5*6 = 720

1*2*3*4*5*6*7 = 5,040

1*2*3*4*5*6*7*8 = 40,320

1*2*3*4*5*6*7*8*9 = 362,880

1*2*3*4*5*6*7*8*9*10 = 3,628,800

 

11팩토리얼은 변수 n을 넘어가버리니 조건에 만족하지 않아 break가 걸립니다.