코테/프로그래머스

[프로그래머스] 다음 큰 숫자 - java

tony1724 2025. 4. 7. 21:42

문제 설명 :

https://school.programmers.co.kr/learn/courses/30/lessons/12911

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제 요약 :

  1. 숫자 n보다 크면서 이진수로 변환했을 때 1의 갯수가 같은 수 구하기

 

문제 풀이 시간 : 10분

문제 성공 여부 : 성공

 

 

접근 방법(성공) :

  1. n을 이진수로 변환
  2. 1의 갯수 저장
  3. n+1을 반복하며 이진수로 변환해서 1의 개수가 같은지 비교

 

전체 코드(성공) :

class Solution {
    public int solution(int n) {
        String N = Integer.toBinaryString(n); // n을 이진수로 변환
        int n_cnt =  getOneCount(N); // 1의 갯수
        
        int number = n;
        while(true){
            number++; // n에서 1씩 더하기
            String NUMBER = Integer.toBinaryString(number); // 이진수로 변환
            
            int cnt = getOneCount(NUMBER); // 1의 갯수
            
            if(n_cnt == cnt) break; // 1의 갯수가 동일할 경우 break
        }
        
        return number; // 숫자 반환
    }
    
    static int getOneCount(String number){
        int cnt = 0;
        for(int i = 0; i<number.length(); i++){
            if(number.charAt(i)=='1') cnt++; // '1'이면 cnt 증가
        }
        
        return cnt;
    }
}

 

너무 깔~~끔~~