본문 바로가기

컴퓨터/프로그래머스

프로그래머스 - 12980번: 점프와 순간 이동 [Java]

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

 

프로그래머스

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

programmers.co.kr

1. 코드

public class Solution {
    public int solution(int n) {
        int ans = 0;
        for(char c : Integer.toBinaryString(n).toCharArray())
            if(c == '1')
                ans++;
        return ans;
    }
}

2. 설명

10진수 2진수 정답
5 101 2
6 110 2
5000
1001110001000
5

위 표를 보면 10진수를 2진수로 변환한 뒤 1의 수와 동일한 것을 확인할 수 있습니다.

따라서 Integer.toBinaryString() 메서드를 통해서 2진수로 변환한 뒤 1의 수를 측정하면 문제는 쉽게 해결됩니다.

3. 정리

  1. 순차적으로 문제를 해결하는 것도 좋지만 간단한 방법은 존재한다.
출처: 프로그래머스 코딩 테스트 연습, 
https://school.programmers.co.kr/learn/challenges