https://school.programmers.co.kr/learn/courses/30/lessons/120848
for문을 이용해서 n까지의 팩토리얼 수를 구한 후, 조건에 맞다면 return을 해 주었다. 하지만, 이 문제는 n보다 작은 수에서 팩토리얼 값을 구하는 것이 아니라 n보다 큰 팩토리얼을 만족하는 숫자를 구하는 문제이므로 for문의 조건 자체가 잘못되었다.
class Solution {
public int solution(int n) {
//n보다 큰 팩토리얼 return
long answer = 1;
int result = 0;
for(int i=1; i<=n; i++){
answer = answer * i; //팩토리얼 값 구하기
if(answer > n){
result = i-1; //조건을 만족하는 이전 값 구하기
break;
}
}
return result;
}
}
while문을 이용하여 범위를 저장하지 않고 구하였다.
class Solution {
public int solution(int n) {
int answer = 1;
int i = 1;
while(true){
answer = answer * i;
if(answer > n){
return i-1;
}
i++;
}
}
}