점프와 순간 이동(Lv2)

108번뇌·2021년 3월 3일
0

#include <iostream>
using namespace std;

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

이 문제는 탐욕 알고리즘이다.
최상의 결과를 얻기 위해서는 가능한 순간이동 한 부분이 많아야 하므로 될수 있는한
순간이동을 하고(나누기 2 하는 행위)

이게 안됬을 경우 1칸 전진한다.
지금까지 이동한 부분으로부터 절대 거리를 이동하므로 이런식이 가능하다.

profile
내일 아침 눈을 떳을 때, '기대되는 오늘 하루를 만들기 위해' 나는 오늘도 생각하고 고민한다.

0개의 댓글