차차로그
[JS] Summer/Winter Coding(~2018) > 점프와 순간 이동 본문
function solution(n){
var ans = 0;
while(n > 1){
if(n % 2 == 0){
n /= 2;
}else{
n -= 1;
n /= 2;
ans++;
}
}
return ans + 1;
}
정답을 구하는 규칙이 N을 2로 계속 나누면서, 홀수가 나오면 1을 빼주는데 이때에만 카운트를 올려주고 최종적으로 그 카운트에 1을 더하면 정답이 나온다.
어떻게 풀긴 했지만 왜 이런 규칙으로 풀리게 됐는지는..잘 모르겠다 ㅠㅠ
다른 사람 풀이
function solution(n){
if(n === 1) return 1;
const nArr = Array.from(n.toString(2));
return nArr.reduce((a,b)=>(+a)+(+b));
}
// n = 5 -> [ '1', '0', '1' ]
// n = 6 -> [ '1', '1', '0' ]
n의 2진수에서 1을 더한 값이 정답과 같다는 규칙으로 풀어낸...
어떻게 이런 규칙을 찾을 수 있는건지 신기하다
'코딩테스트' 카테고리의 다른 글
[JS] 연습문제 > 최고의 집합 (0) | 2022.09.16 |
---|---|
[JS] 2018 KAKAO BLIND RECRUITMENT > [1차] 캐시 (0) | 2022.09.15 |
[JS] 2017 팁스타운 > 예상 대진표 (0) | 2022.09.15 |
[JS] 연습문제 > 멀리 뛰기 (0) | 2022.09.14 |
[JS] 탐욕법(Greedy) > 구명보트 (0) | 2022.09.14 |
Comments