[프로그래머스] 팩토리얼
카테고리 : 컴퓨터 공학
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 팩토리얼 · js 팩토리얼
태그: programmers · Code Refactoring · 참고 할 만한 다른 사람의 코드 · 코딩 기초 트레이닝 · 프로그래머스 · 코딩테스트 연습 · JavaScript · 팩토리얼 · js 팩토리얼
문제 설명
i
팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 _ 4 _ 3 _ 2 _ 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
- i! ≤ n
제한사항
- 0 <
n
≤ 3,628,800 before
와after
는 모두 소문자로 이루어져 있습니다.
입출력 예
n | result |
---|---|
3628800 | 10 |
7 | 3 |
입출력 예 설명
입출력 예 #1
- 10! = 3,628,800입니다.
n
이 3628800이므로 최대 팩토리얼인 10을 return 합니다.
입출력 예 #2
- 3! = 6, 4! = 24입니다.
n
이 7이므로, 7 이하의 최대 팩토리얼인 3을 return 합니다.
나의 풀이
function solution(n) {
var answer = 1;
var factor = (num) => {
for (i = 1; i <= num; i++) {
answer *= i;
if (answer === num) {
return (answer = i);
} else if (answer > num) {
return (answer = i - 1);
}
}
};
factor(n);
return answer;
}
나의 두번째 풀이(Code Refactoring)
function solution(n) {
let result = 1;
let factor = 1;
while (result <= n) {
result++;
factor *= result;
if (factor > n) {
return result - 1;
}
}
}
// 1. result는 증가하는 숫자
// 2. factor는 결과값
// 3. result는 1부터 증가하고 factor에 값을 곱한다
// 4. factor의 값이 n보다 클 경우 result-1을 리턴
참고 할 만한 다른 사람의 코드
function solution(n) {
for (let i = 1, v = 1; true; v *= ++i) if (v > n) return --i;
}