Java/Coding Test
팩토리얼
최고다최코딩
2023. 9. 11. 00:09
728x90
정수 n이 주어질 때 i!<=n 을 만족하는 가장 큰 정수 i를 반환
>1부터 i까지 1씩 증가하는 수를 곱해가며 n과 비교하여 i를 구한다.
public int solution(int n) {
if (n == 0)
return 0;
int answer = 1;
int f = 1;
/*-*/
return factorial(n, answer, f);
}
public int factorial(int n, int answer, int f) {
f *= answer;
if (n < f) {
return answer - 1;
} else if (n == f)
return answer;
return factorial(n, answer + 1, f);
}
f= answer!
> f는answer의 팩토리얼값
f와 n을 비교하여 n과 같으면 answer반환, n 보다 크면 answer-1 반환
f가 n보다 작으면 answer를 1 증가시켜 다시 반복한다.
>while문으로 표현
public int solution2(int n) {
int answer = 1;
int m = 1;
while (true) {
m = m * answer;
if (m < n) {
answer++;
} else if (m == n) {
return answer;
} else if (m > n) {
return answer - 1;
}
}
}
m ==answer!;
m 이 n보다 작으면 answer를 증가시키고 다시 반복한다.