반응형
문제 설명
i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
- i! ≤ n
제한사항
- 0 < n ≤ 3,628,800
입출력 예
nresult
입출력 예 설명
입출력 예 #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) {
int i = 1;
int factorial = 1;
while (factorial <= n) {
factorial *= i;
i++;
}
return i - 2;
}
}
- 변수 초기화: 'i'를 1로 설정하여 계승 계산을 시작하고,
'factorial'을 초기 계승값으로 1로 설정. - while 루프 시작: 계승이 'n'보다 커질 때까지 루프가 돈다.
- 팩토리얼 업데이트: 루프의 각 반복에서 '팩토리얼'은 'i'의 현재 값과 곱하여 업데이트된다.
이 단계는 'i'의 계승을 계산합니다. (팩토리얼 실행) - 증분 'i': 계승을 업데이트한 후 다음 반복을 위해 'i'가 1씩 증가한다. (i++)
- 루프 종료: 계승이 'n'을 초과하면 루프가 종료된다.
- 결과 반환: 계승이 'n'을 초과하면 루프가 종료되므로
이 시점에서 'i'의 값은 원하는 값보다 1이 커지게 된다.
'i'에서 2를 빼면 'n'보다 작거나 같은 가장 큰 계승 수를 얻게 된다.
따라서 코드는 주어진 'n'보다 작거나 같은 가장 큰 계승 번호의 인덱스를 반환한다.
반응형