반응형
문제설명
i 팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
i! ≤ n
제한사항
0 < n ≤ 3,628,800
내가 풀이한 방법
재귀를 사용하여 문제풀이를 하였습니다.
class Solution {
public int factorial(int n) {
if (n == 1) return 1;
return n * factorial(n - 1);
}
public int solution(int n) {
int answer = 0;
for (int i = 1; i <= 10; i++) {
int count = factorial(i);
if (count <= n) answer = i;
}
return answer;
}
}
다른 풀이방법
다른 분들은 반복문을 사용해서 문제풀이를 하였습니다. 이 경우가 실행속도는 더 빠릅니다.
class Solution {
public int solution(int n) {
int fac = 1;
int i = 0;
while(true){
if (fac <= n) {
fac *= i + 1;
i++;
} else break;
}
return i - 1;
}
}
반응형
'컴퓨터공학 > 알고리즘' 카테고리의 다른 글
[알고리즘] 숨어있는 숫자의 덧셈 (2) (0) | 2023.12.11 |
---|---|
[알고리즘] k의 개수 (1) | 2023.11.16 |
[알고리즘] 2차원으로 만들기 (1) | 2023.11.09 |
[알고리즘] 약수 구하기 (0) | 2023.11.08 |
[알고리즘] n의 배수 구하기 (0) | 2023.11.07 |