코딩테스트 - 프로그래머스/JAVA

[프로그래머스 / 코딩테스트 연습 / 자바(JAVA)] 점프와 순간이동

읁; 2024. 3. 15. 18:54

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12980#

 

프로그래머스

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

programmers.co.kr

풀이

로직

  1. 전진해야 할 거리가 홀수이면 에너지를 써 1칸 전진하고,
    • if(n%2 !=0) n--; answer++;
  2. 전진해야 할 거리가 짝수이면 순간이동한다.
    • else n /= 2;

코드

import java.util.*;

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

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

        return ans;
    }
}

채점 결과

정확성  테스트
테스트 1 〉    통과 (0.03ms, 75.2MB)
테스트 2 〉    통과 (0.02ms, 72.8MB)
테스트 3 〉    통과 (0.02ms, 90.6MB)
테스트 4 〉    통과 (0.03ms, 74.8MB)
테스트 5 〉    통과 (0.02ms, 74.5MB)
테스트 6 〉    통과 (0.02ms, 86.7MB)
테스트 7 〉    통과 (0.02ms, 71.4MB)
테스트 8 〉    통과 (0.02ms, 74.3MB)
테스트 9 〉    통과 (0.01ms, 77.4MB)
테스트 10 〉    통과 (0.02ms, 70.2MB)
테스트 11 〉    통과 (0.02ms, 74.7MB)
테스트 12 〉    통과 (0.03ms, 76.2MB)
테스트 13 〉    통과 (0.03ms, 74.6MB)
테스트 14 〉    통과 (0.02ms, 73.7MB)
테스트 15 〉    통과 (0.02ms, 72.9MB)
테스트 16 〉    통과 (0.02ms, 73.2MB)
테스트 17 〉    통과 (0.02ms, 74.4MB)
테스트 18 〉    통과 (0.03ms, 79.2MB)

효율성  테스트
테스트 1 〉    통과 (0.02ms, 51.6MB)
테스트 2 〉    통과 (0.02ms, 58.5MB)
테스트 3 〉    통과 (0.02ms, 52.6MB)
테스트 4 〉    통과 (0.02ms, 52.2MB)
테스트 5 〉    통과 (0.02ms, 52.2MB)
테스트 6 〉    통과 (0.02ms, 52.3MB)
테스트 7 〉    통과 (0.02ms, 51.5MB)
테스트 8 〉    통과 (0.01ms, 51.9MB)
테스트 9 〉    통과 (0.02ms, 52.4MB)
테스트 10 〉    통과 (0.02ms, 52.2MB)

채점 결과
정확성: 60.0
효율성: 40.0
합계: 100.0 / 100.

 

좋은 풀이

이기현 , ghkvud2 , 장유리 , MyeongGeun Jo 외 69 명

public class Solution {
    public int solution(int n) {
        return Integer.bitCount(n);
    }
}

 

배운 점

  1. Integer.bitCount(n)
    • 숫자 n을 이진수로 변환해서, 1비트의 개수를 반환하는 메소드!
    • 2로 나누었을 때 홀수이면 1을 반환하고, 그렇지 않으면 0을 반환하는 이진법을 구하는 로직과, 이 문제의 로직이 동일함.