[프로그래머스] 12911 다음 큰 숫자 / Java 정답

programmers

쉬운 문제라도 문제를 푸는 방법은 다양합니다.

더 명확하고 깔끔한 문제 해결 방법을 아신다면 자유롭게 말씀해주세요.

프로그래머스 번호 제목

프로그래머스 저작권을 침해하지 않기 위해

문제 보시고 싶으시면 버튼을 눌러주세요.

답변 형식
프로그래머스 12911 자바
프로그래머스 12911 파이썬

숫자 N을 이진수로 바꾸었을 때 1의 갯수가 같고, N보다 큰 최소한의 정수를 리턴하면 된다.

풀이 조건

자바 문법으로 Integer.bitCount() 함수를 알고 있으면 쉽게 해결된다.

숫자를 이진수로 바꿔주고, 이진수의 1의 갯수를 세주는 함수를 통해 빠르게 이진수의 1  갯수를 알 수 있다.

class Solution {
        public int solution(int n) {        
            int n_num = Integer.bitCount(n);
                       
            int k = n+1;
           
            while(true) {
                int k_num = Integer.bitCount(k);                
               
                if(n_num == k_num) {
                    break;
                }
               
                k++;
            }
            return k;
        }
    }
class Solution {
    // Integer.bitCount : 비트로 변환했을 때 1의 갯수 반환
    public int solution(int n) {    
           
        int n_num = Integer.bitCount(n);
        // 주어진 숫자의 비트 형식 1의 갯수 세기
                   
        int k = n+1;
        // n보다 큰 임의의 정수 K
       
        while(true) {
            int k_num = Integer.bitCount(k);
            // K의 비트 형식 1의 갯수 세기                
           
            if(n_num == k_num) {
                break;
                // n과 k의 비트 형식 1 갯수가 같으면 반환
            }
           
            k++;
            // 비트 형식 1 갯수가 다르다면 K의 크기 1 추가
        }
        return k;
    }
}

“[프로그래머스] 12911 다음 큰 숫자 / Java 정답”의 47개의 댓글

댓글 달기

이메일 주소는 공개되지 않습니다.