문제
팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
입출력 예 #1
10! = 3,628,800입니다. n이 3628800이므로 최대 팩토리얼인 10을 return 합니다.
입출력 예 #2
3! = 6, 4! = 24입니다. n이 7이므로, 7 이하의 최대 팩토리얼인 3을 return 합니다.
나의 풀이
function solution(n) {
var num = 1;
while (true) {
var cal = 1;
for (var i = 1 ; i<= num ; i ++ ) {
cal *= i;
}
if (cal > n) break;
num ++;
}
return num-1;
}
접근 방식은 괜찮았는데 while 문 안에 if 의 조건문을 넣었으면 될일 ;;
num이 1씩 커지고 cal에 계속 곱하여(팩토리얼) cal 이 n을 넘으면 num-1을 반환
다른 사람의 풀이
function solution(n) {
for(let i = 1, v = 1; true; v *= ++i) if(v > n) return --i;
}
i가 1씩 커지고 이 수를 v에 계속 곱하여 v가 n을 넘어서는 순간 i-1을 반환하는 것이 내가 만든 답과 로직은 같지만 for문 하나 만으로 훨씬 간결하게 만들어진 모습
https://school.programmers.co.kr/learn/courses/30/lessons/120848#
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 중복된 문자 제거 (0) | 2025.02.05 |
---|---|
프로그래머스 - 모음 제거 (JavaScript) (2) | 2025.02.04 |
프로그래머스 - 주사위의 개수 (0) | 2025.01.23 |
프로그래머스 - 배열 회전시키기 (0) | 2025.01.23 |
프로그래머스 - 공 던지기 (1) | 2025.01.22 |
댓글