문제 설명
i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
- i! ≤ n
제한사항
0 < n ≤ 3,628,800
입출력 예
n | result |
3628800 | 10 |
7 | 3 |
입출력 예 #1 : 10! = 3,628,800입니다. n이 3628800이므로 최대 팩토리얼인 10을 return 합니다.
입출력 예 #2 : 3! = 6, 4! = 24입니다. n이 7이므로, 7 이하의 최대 팩토리얼인 3을 return 합니다.
나의 풀이
class Solution {
public int solution(int n) {
for (int i = 1; i <= 10; i++) {
if (factorial(i) == n) {
return i;
} else if (factorial(i) <= n && n < factorial(i + 1)) {
return i;
}
}
return -1;
}
public int factorial(int n){
if(n == 0 || n == 1){
return 1;
}else{
return n * factorial(n-1);
}
}
}
다른 풀이
class Solution {
public int solution(int n) {
int answer = 1;
int factorial = 1;
while(n >= factorial) {
answer ++;
factorial *= answer;
}
return answer -1 ;
}
}
'👨💻 Coding Test > Java' 카테고리의 다른 글
[Programmers/Java/Lv.0/문자열 유형] 48.문자열 정렬하기 (1) (1) | 2025.02.11 |
---|---|
[Programmers/Java/Lv.0/문자열 유형] 47.모음제거 (0) | 2025.02.10 |
[Programmers/Java/Lv.0] 45.최댓값 만들기(1) (0) | 2024.12.04 |
[Programmers/Java/Lv.0] 44.합성수 찾기 (0) | 2024.12.03 |
[Programmers/Java/Lv.0] 43.주사위의 개수 (0) | 2024.12.02 |