문제 설명
점프할때 에너지가 줄고, 현재까지 온 거리 *2 순간이동 할때는 에너지가 줄지 않는다.
사용해야 하는 건전지의 최솟값.
문제 풀이 방법
- 처음에는 1칸을 먼저 간 후 2배씩 늘려 거리 계산하는 방법으로 생각해서 풀이했다.
반복문 안에 반복문안에 반복문이 들어가면서 시간이 초과되면서 실패.
- 다른 사람 풀이로 힌트를 얻었다. 짝수, 홀수일 경우로 나눠서전체 거리를 2로 나누는 탑다운방식으로 풀었다. 허무할정도로 간단한 코드여서 개발에 소질이 없는것 같다는 자괴감ㅇ ...
간단해 보이지만 굉장히 논리적인 코드라고 생각한다. 왜 난 이생각을 못하는가.. 고민이 필요하다.
public int solution(int n) {
int ans = 0;
while (n!=0) {
if(n%2==0) {
n/=2;
}else {
n--;
ans++;
}
}
return ans;
}
package step1;