본문 바로가기
Algorithm/프로그래머스

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

by 세류오 2023. 8. 12.

https://school.programmers.co.kr/learn/courses/30/lessons/12980

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

설명

거리를 이동하는 아이언 슈트, 이동시에 배터리를 소모한다.

이동하고자 하는 거리가 주어졌을 때 최소한의 배터리를 소모하여 이동하는 방법을 찾기.

 

점프: 한번에 K칸을 점프하여 이동

워프: 현재까지 이동한거리 x 2 만큼 이동

 

점프 시 배터리를 소모하지만 워프 시 배터리를 소모하지 않는다.

 

 

방법

주어진 목표 거리를 역순으로 나누어 파악

2로 나누다가(워프)

나누어지지 않는다면 거리에(점프필요) -1을 실행(점프) 후 배터리소모를 1 증가

 

import java.util.*;

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

        while (n > 0) {
            //2로 나누어 질 때
            if(n % 2 == 0){
                n = n / 2;
            } else {
            //나누어지지 않을 때
                n--;  //거리 -1
                ans++;//배터리소모 +1
            }
        }

        return ans;
    }
}