점프와 순간 이동 : 문제 링크
- 처음 위치 0 에서 5 칸을 앞으로 점프하면 바로 도착하지만, 건전지 사용량이 5 만큼 든다.
- 처음 위치 0 에서 2 칸을 앞으로 점프한 다음 순간이동 하면 (현재까지 온 거리 : 2) x 2에 해당하는 위치로 이동할 수 있으므로 위치 4로 이동한다. 이때 1 칸을 앞으로 점프하면 도착하므로 건전지 사용량이 3 만큼 든다.
- 처음 위치 0 에서 1 칸을 앞으로 점프한 다음 순간이동 하면 (현재까지 온 거리 : 1) x 2에 해당하는 위치로 이동할 수 있으므로 위치 2로 이동된다. 이때 다시 순간이동 하면 (현재까지 온 거리 : 2) x 2 만큼 이동할 수 있으므로 위치 4로 이동한다. 이때 1 칸을 앞으로 점프하면 도착하므로 건전지 사용량이 2 만큼 든다.
위의 3가지 경우 거리가 5만큼 떨어져 있는 장소로 가기 위해서 3번째 경우가 건전지 사용량이 가장 적으므로 답은 2가 된다.
제한 사항
- 숫자 N : 1 이상 10억 이하의 자연수
- 숫자 K : 1 이상의 자연수
using namespace std;
int solution(int n)
{
int ans = 0;
while(n) {
if(n % 2 == 1) ans++;
n /= 2;
}
return ans;
}