import java.util.*;
public class Solution {
public int solution(int n) {
int ans = 0;
// 한칸 씩 점프 -> 건전지 1소모
// 온 거리 2배 순간이동 -> 건전지 0소모
while(true){
if(n==0) break;
if(n%2==0) {
n=n/2;
}
else if(n%2!=0){
n=n-1;
ans++;
}
}
return ans;
}
}
그냥 구현 문제인듯하다.
이러한 유의 사항들을 숙지하고 입력값중 제일 큰 숫자인 5000을 기준으로 한번 계산을 해본다.
5000을 2로 나눴을때 나누어 떨어진다. 그러면 2배 순간이동을 한것. 2500이 나온다. 2500을 2로 나눴을때는 1250이 나온다. 1250을 나누면 625가 나온다. 여기서 625는 2로 나누어 떨어지지 않는다. 이 경우에는 1칸 점프 한 것이다. 배터리 소모량을 ++ 해준다. 이런 식으로 최초의 시작점 0이 될때까지 while문을 돌려준다.