[프로그래머스] 점프와 순간이동 - c++

삼식이·2025년 7월 28일
0

알고리즘

목록 보기
78/81

점프와 순간이동

연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 판매하고 있다.

아이언 슈트를 입고 이동하면 건전지를 사용하지 않아도 되지만 K 칸을 점프하게 될 경우 K 만큼의 건전지 사용량이 든다.

건전지 사용량을 최소로 해야하므로, n이 2로 나누어 떨어지면 n/=2를 계산하고 그렇지 않은 경우 건전지사용량 +1, n-=1을 해주면 된다.

[전체코드]

#include <iostream>
using namespace std;

int solution(int n)
{
    int ans = 1;
    while(n!=1) {
        if (n%2!=0) {
            ans++;
            n-=1;
        } else {
            n/=2;
        }
    }

    return ans;
}

0개의 댓글