문제 설명
i 팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 0 < n <= 3,628,800
입출력 예
n | result |
3628800 | 10 |
7 | 3 |
class Solution {
static int factorial(int a) {
if (a <= 1) {
return a;
} else {
return factorial(a - 1) * a;
}
}
public int solution(int n) {
int answer = 0;
for (int i = 1; i <= 10; i++) {
if (factorial(i) <= n) {
answer = i;
}
}
return answer;
}
}
factorial 함수는 팩토리얼을 재귀적으로 구현한 함수입니다. solution 함수에서 활용할 것입니다.
for문이 1부터 10까지 순회합니다. 문제의 조건에서 n은 3628800, 즉, 10!까지이므로 이렇게 조건을 세웠습니다. if문에서 factorial(i)가 n보다 작거나 같을 때, answer는 i가 됩니다. 만약 factorial(i)가 n보다 커지는 순간이 온다면 이는 if문에서 걸러지므로, n보다 커지기 직전의 값을 반환할 것입니다. 이 값은 i입니다.
어쩌다보니 11일차 클리어….
'프로그래머스 > Lv. 0(코딩테스트 입문)' 카테고리의 다른 글
[프로그래머스 코딩테스트] 가위 바위 보(Java) (1) | 2023.04.19 |
---|---|
[프로그래머스 코딩테스트] 캐릭터의 좌표(Java) (0) | 2023.04.19 |
[프로그래머스 코딩테스트] 컨트롤 제트(Java) (0) | 2023.04.18 |
[프로그래머스 코딩테스트] 7의 개수(Java) (0) | 2023.04.17 |
[프로그래머스 코딩테스트] 숨어있는 숫자의 덧셈(2)(Java) (0) | 2023.04.17 |