프로그래머스 점프와 순간이동 (Java, 자바)

jonghyukLee·2023년 6월 26일
0

이번에 풀어본 문제는
프로그래머스 점프와 순간이동 입니다.

📕 문제 링크

❗️코드

import java.util.*;

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

📝 풀이

시작 지점에서 n까지 이동하려고 합니다.
이동하는 방법에는 점프와 순간이동이 있습니다.
점프를 했을 경우 거리만큼의 에너지를 소모하고,
순간이동은 현재 위치 * 2 만큼 이동할 수 있으며 에너지를 소모하지 않습니다.
위의 조건에서 n까지 이동하기 위한 최소 에너지 소모 비용을 구하는 문제입니다.
입력되는 n의 최댓값이 10억이기 때문에, 배열은 활용할 수 없었고, 반복문을 통해 목적지 부터 출발점까지 돌아오는 과정을 구현해보았습니다. 순간이동이 가능하다면 n값을 2로 나누어 순간이동을 해주고, 홀수라서 불가능하다면 에너지를 1 소모하여 한칸 점프합니다.
이 과정을 반복한 후 누적된 answer을 반환해주면 해결할 수 있습니다.

profile
머무르지 않기!

0개의 댓글