본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 다음 큰 숫자 (Java)

by 김홍중 2021. 2. 8.

1. 문제

프로그래머스 다음 큰 숫자

programmers.co.kr/learn/courses/30/lessons/12911

 

코딩테스트 연습 - 다음 큰 숫자

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니

programmers.co.kr

2. 설명

 

3. 접근

  • 주어진 수를 2진수로 변환시 1의 개수를 구합니다.
  • for문으로 주어진 큰 수 중에서 2진수 변환시 1의 개수를 구합니다.
  • 주어진 수의 1의개수와 같으면 for문을 중단합니다.
  • 정답을 리턴합니다.

4. 코드

class Solution {
    public int solution(final int n) {
        int temp = 0;
        int currentCnt = 0;
        int targetCnt = 0;
        int target = n;
        int current = 0;

        targetCnt = decimalToBinary(target, targetCnt);

        for (current = n + 1; currentCnt != targetCnt; current++) {
            currentCnt = 0;
            temp = current;
            currentCnt = decimalToBinary(temp, currentCnt);
        }
        return current - 1;
    }

    public static int decimalToBinary(int current, int cnt) {
        while (current > 0) {
            if (current % 2 == 1) {
                cnt++;
            }
            current = current / 2;
        }
        return cnt;
    }
}

댓글