프로그래머스 JS LV0
LV0 62 팩토리얼
와라리요
2022. 10. 25. 17:00
문제
- i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
· i! ≤ n
입출력 예
n | result |
3628800 | 10 |
7 | 3 |
나만의 풀이
백토리얼은 숫자 이하의 자연수를 다 곱하는 것이니 반대로 값에서 숫자 이하의 자연수를 나누면 백토리얼 숫자가 나온다.
그래서 while문을 이용해 n이 변수보다 작을 경우 멈추게 한다. 그리고 반복문으로 변수에 1을 더하고 n에 변수를 나눈 값을 반환하면 되는데 예외로 n이 1면 2가 반환이 되기 때문에 if문으로 처음을 막은 후 for문을 돌리는 방향으로 했다.
function solution(n) {
let answer = 0;
if (n === 1) {
return n;
}
while (n >= answer) {
answer += 1;
n = n / answer;
}
return answer;
}