class Solution {
public int solution(int n) {
int answer = 0;
int factorial = 1;
for(int i=1; i<=10; i++){
factorial *= i;
if(factorial == n){
answer = i;
break;
}else if(n < factorial){
answer = (i-1);
break;
}
}
return answer;
}
}
5) 느낀점
이전에 팩토리얼 문제를 풀어서 factorial을 클래스 내 메소드로 푸는 방법을 했다가,
factorial이 n일 때의 조건을 생각하고 코드를 수정하다보니 현재의 코드에 도달하였습니다.
아래는 제일 처음 작성한 코드입니다. 이 코드의 경우 return i-1 부분이 개인적으로 이해가 되지 않아 다른 풀이방식을 취하기로 결심했습니다.
class Solution {
public int solution(int n) {
int i = 1;
while (factorial(i) <= n) {
i++;
}
return i - 1;
}
private long factorial(int x) {
long result = 1;
for (int i = 2; i <= x; i++) {
result *= i;
}
return result;
}
}
그리고 아래는 다른 사람이 작성한 while을 이용한 코드입니다.
class Solution {
public int solution(int n) {
int factorial = 1;
int i = 0;
while(true){
if(factorial <= n){
factorial *= i + 1;
i++;
}else break;
}
return i-1;
}
}