반응형
코딩테스트 팩토리얼
문제 설명
출력 예시
무작위 정수 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가 걸립니다.