프로그래머스_C#/Level_2

[프로그래머스 C#] 점프와 순간 이동

최애뎡 2021. 11. 11. 23:16
728x90
반응형

 

https://programmers.co.kr/learn/courses/30/lessons/12980?language=csharp 

 

코딩테스트 연습 - 점프와 순간 이동

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

programmers.co.kr

using System;

class Solution
{
    public int solution(int n)
    {
        int answer = 1;

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

        return answer;
    }
}

어찌 됐든 1칸은 앞으로 가야 순간이동 가능하니까 그냥 answer을 진즉 1로 두고

건전지를 최대한 덜 쓰고 순간이동을 많이 이용해야 하니까

가장 큰 값으로 순간이동이 되려면 가장 큰 값인 도착점부터 가장 작은 값인 시작점으로 간다고 가정을 하면 되니까

6 -> 순 3 -> 건 2 -> 순 1 

이런 식으로 갈 수 있다

순간이동은 2배 가니까 2배 줄이면 되고

홀수일 경우 예로 7이면

7 -> 건 6 -> 나머지 그대로

이렇게 가면 되니까 

반응형