본문 바로가기
Algorithm/Programmers Java

[JAVA] 프로그래머스 LEVEL2 다음 큰 숫자

by 제우제우 2024. 11. 11.

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

 

프로그래머스

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

programmers.co.kr

코딩테스트 연습 > 연습문제 > 다음 큰 숫자

 

난이도: LEVEL2

알고리즘 유형: 구현 

풀이 설명 

다른 사람들 풀이를 보면 숫자를 문자열로 바꾸고 또 다시 숫자로 바꿔서 반환하는데 

나는 문자열로 변환 작업을 하지 않고 풀었다.

그냥 while 문 안에서 숫자를 1씩 늘려가면서 해당 숫자를 2로 나누었을 때 1이면 1 개수를 증가하여 

초기 n의 1 개수와 같으면 바로 return 하였다. 

정답 코드 

class Solution {
    public int solution(int n) { 
        int cnt = count(n);
        while(true){
            if(cnt == count(++n)){
                return n;
            }
        }
    }
    public static int count(int input){
        StringBuilder sb = new StringBuilder ();
        int cnt = 0;
        while(input >= 2){
            if(input % 2 == 1) cnt++;
            input /= 2;
        } 
        if(input == 1) cnt++;
        return cnt;
    }
}