본문 바로가기
JAVA/Coding Test Study

[Lv.2] 프로그래머스 - 점프와 순간 이동 : Java

by ♡˖GYURI˖♡ 2024. 4. 15.
728x90
 

프로그래머스

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

programmers.co.kr

 

 

이해하기

처음에는 가능한 경우의 수를 다 해봐야 하나 싶었다.

하지만 제한 사항을 보니 N은 10억 이하의 자연수... 

도저히 감이 안 잡혀서 참고하여 풀이하였다.

 

 

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

프로그래머스 점프와 순간 이동개인적으로 이런 문제가 정말 어렵다. 문제를 처음 훑어봤을 때 BOJ 숨바꼭질 유형의 문제라고 생각했고 BFS, DFS를 적용해보려 노력했지만최악의 경우가 10억이고

velog.io

 

점프는 할 때마다 건전지가 사용되니 건전지를 최소로 사용하기 위해서는 점프보다 순간이동을 많이 해야만 한다.

또 내가 위에서 생각했던 방식은 bottom-up(0부터 N까지)이고 이와 반대되는 top-down(N부터 0까지)가 경우의 수가 훨씬 적다고 한다.

 

  • N이 0이 될 때까지
    • N이 짝수면 N /= 2
    • N이 홀수면 N -= 1

 

문제풀이

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

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

        return ans;
    }
}

 

 

풀이만 보면 정말 간단한데 방법을 떠올리기가 넘 어려웠다.