728x90
반응형
문제
i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다.
예를 들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다.
정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
제한사항
0 < n ≤ 3,628,800
내 답
function solution(num) {
if(num === 1){
return 1
}
if(num ===2){
return 2
}
let div = 1
const Arr = []
for(let i=1; i<num; i++){
div = div*i
if(div<=num){
Arr.push(i)
}
if(div>num){
break
}
}
return Arr[Arr.length-1]
}
let 변수 1 만들어주고
num까지 반복문 돌려 곱한 다음 각각 몫을 Arr 넣어주어 가장 마지막에 담기는 값을 return 해주는 방식으로 풀었다
하지만 이는 좋은 방법은 아닌 거 같았고
다른 분이 false 일때까지 도는 while문으로 푸신 걸 보고 이를 똑같이 적용해보았다
function solution(num) {
let answer = 1
let i = 0
while(answer <= num){
i++
answer = answer*i
}
return i-1
}
num 이 10일 때
- 첫번째 턴
1 <= 10
i =1
answer = 1*1 =1
- 두번째 턴
1<= 10 (true)
i=2
answer = 1*2 =2
- 세번째 턴
2<=10 (true)
i=3
answer = 2*3 =6
- 네번째 턴
6<=10(true)
i=4
answer = 6*4 = 24
- 다섯번째 턴
24>=10(false)
-> while 문 끝!
조건식을 먼저 보고 i++ 해주므로
그 전의 턴이 정답에 해당한다
return i-1
728x90
반응형
'TIL' 카테고리의 다른 글
.env / .env.production / .env.development 차이 (0) | 2022.12.27 |
---|---|
js 코딩테스트 소인수 분해 문제 (0) | 2022.12.23 |
react git action ci / cd 배포 환경 설정(.env) (0) | 2022.12.19 |
CI/CD 시 만났던 오류 : parserOptions.project" has been set for @typescript-eslint/parser." (0) | 2022.12.19 |
gh-pages로 react 작업물 배포하는 법 (0) | 2022.12.15 |
댓글