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

dev.hyeon·2022년 10월 15일
0

알고리즘

목록 보기
36/44
post-thumbnail

점프와 순간 이동

풀이

이동하는 거리 N이 주어질 때, 건전지 사용량의 최소값을 구하는 문제이다.
건전지 사용량을 최소화하기 위해선 순간이동을 최대한 많이 해야한다.
현재 위치에서 순간 이동이 가능한 조건은 (현재 위치) x 2가 가능할 때이다.
역으로 생각하면 현재 위치를 2로 나누었을 때 나머지가 0이면 순간이동을, 1이면 한칸 이동을 했음을 의미한다. 따라서 순간 이동을 최대한 많이 사용했을 때 건전지 사용량은 최종 위치 N을 2로 계속 나누어갔을 때 나머지의 합이다.

코드

using System;

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

        while (n > 0)
        {
            answer += n % 2;
            n /= 2;
        }
        return answer;
    }
}

0개의 댓글