<문제 설명>
제한사항
입출력 예nresult
입출력 예 설명
i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
- i! ≤ n
제한사항
- 0 < n ≤ 3,628,800
입출력 예nresult
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) {
let fac = 1; // 팩토리얼
for(let k=1; k<n; k++){
fac = fac*k
if(fac >= n){ // fac이 n이상이 됬을 경우의 k값을 구함.
return fac==n? k: k-1
}
}
}
자꾸 실패가 뜬다. 왜그런지 했다. 빠져먹은 값이 있나 싶어
// n보다 작거나 같은 가장큰 팩토리를 구해야함.
//1 n=1 같아야함
//2 2! 같아야함.
//3 3! 3을 넘기려면 3팩이 필요. 2!이 제일 큼
//4 3! 4를 넘기려면 3팩 -> 2!이 제일 큼
//5 3! 5를 넘기려면 3팩 -> 2!이 제일 큼
//6 3! 6을 넘기려면 3팩 -> 3!이 제일 큼
//7 4! 7을 넘기려면 4팩 -> 3!이 제일 큼
이런식으로 표도 만들어보았는데 그래도 맞았다.
실패 (0.03ms, 33.5MB) | |
테스트 2 〉 | 실패 (0.03ms, 33.4MB) |
테스트 3 〉 | 실패 (0.03ms, 33.5MB) |
테스트 4 〉 | 통과 (0.03ms, 33.5MB) |
테스트 5 〉 | 통과 (0.03ms, 33.4MB) |
테스트 6 〉 | 통과 (0.03ms, 33.5MB) |
원인은 반복문을 너무 많이 돌려서 시간초과가 뜬것. 코드 자체는 문제가 없었다.
시간초과 때문에 3일을 뻘짓해도 몰라서 답을 봤는데 다들 똑같길래 뭔가 싶었더니 반복횟수를 줄이니 바로 통과되더라...
unction solution(n) {
let fac = 1; // 팩토리얼
for(let k=1; k<11; k++){
fac = fac*k
if(fac >= n){ // fac이 n이상이 됬을 경우의 k값을 구함.
return fac==n? k: k-1
}
}
}
'🗃️javascript > 프로그래머스' 카테고리의 다른 글
A로 B 만들기(Lv.0)[반복문 i번에 조건을 구성하는 변수값이 변경된다면, i+1에는 바뀐 변수값으로 조건을 따짐] (0) | 2023.01.10 |
---|---|
없는 숫자 더하기(Lv.1)[문제 조건들 똑바로 읽자. includes()설명] (0) | 2023.01.10 |
분수의 덧셈(기초 day2) (0) | 2023.01.10 |
모스부호 (1)(객체의 기초) (1) | 2023.01.09 |
콜라츠 추측(Lv.1)[반복문의 한계가 미정일 땐 while문] (0) | 2023.01.06 |