문제 🔽
https://school.programmers.co.kr/learn/courses/30/lessons/12980
다른사람 풀이 🔽
function solution(n)
{
if(n == 1) return 1;
var battery = 0;
// n을 2로 나눠가며 나오는 나머지의 합
while(n>0) {
battery += n%2;
n = Math.floor(n/2);
}
return battery;
}
내풀이🔽
1. 성공 ⭕
function solution(n)
{
let answer = 0;
while(1){
if(n===1){
++answer
break;
}
if(n%2===1){
n=(n-1)/2
++answer;
}else{
n=n/2
}
}
return answer;
}
느낀점🔽
순간인동은 x2를 하면서 움직이고 이를 최대한 활용해야 한다.
주어진 n을 2로 나눠서 떨어진다면 배터리 소모없이 그 전단계로 움직일수 있다
만약 n이 2로 나눴을 때 1로 떨어진다면 배터리 1를 소모하는 방식으로 최소한의 배터리 소모량을 도출 했다.
'Javascript' 카테고리의 다른 글
프로그래머스 코딩테스트 풀이(js) > 멀리뛰기(lv2) (0) | 2023.06.27 |
---|---|
프로그래머스 코딩테스트 풀이(js) > N개의 최소공배수(lv2) (0) | 2023.06.26 |
프로그래머스 코딩테스트 풀이(js) > 구명보트(lv2) (0) | 2023.06.24 |
프로그래머스 코딩테스트 풀이(js) > 예상 대진표(lv2) (0) | 2023.06.23 |
프로그래머스 코딩테스트 풀이(js) > 카펫 (lv2) (0) | 2023.06.20 |