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

giggle·2023년 8월 3일
0

문제

다음 큰 숫자


📌 아이디어

문제에서 주어진 자연수 n에서 1씩 더해가며, 이진수로 변환한 후에 1의 개수가 동일한 지에 대해 탐색했습니다. 만약 동일한 경우가 있으면 반복문을 종료하고 정답 처리를 진행했습니다.


📌 코드

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
        // 이진수로 변환
        String target = Integer.toBinaryString(n);
        // 이진수에서의 1의 개수 카운트
        int cnt = 0;
        for (int i=0; i<target.length(); i++) {
            if (target.charAt(i) == '1') {
                cnt++;
            }
        }
        
        int rst = n+1;
        while (true) {
            String brst = Integer.toBinaryString(rst);
            int bcnt = 0;
            
            for (int i=0; i<brst.length(); i++) {
                if (brst.charAt(i) == '1') {
                    bcnt++;
                }
            }
            // 1의 개수가 동일하다면 정답 처리
            if (cnt == bcnt && rst > n) {
                answer = rst;
                break;
            }
            rst++;
        }
        
        return answer;
    }
}

✏️ Tip

  • Integer.toBinaryString 를 활용한다면 손쉽게 이진수로 변환 가능

피드백 및 개선점은 댓글을 통해 알려주세요😊

profile
배움을 글로 기록하는 개발자가 되겠습니다.

0개의 댓글