본문 바로가기

알고리즘

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

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

 

프로그래머스

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

programmers.co.kr

import java.util.*;

class Solution {
    
    //이진수 변환 후 1의 개수 counting
    public int count1(int num){
        int cnt = 0;
        while(num > 1){
            if(num % 2 == 1){
                cnt++;
                num = num / 2;
            }
            else{
                num = num / 2;
            }
        }
        
        return cnt + num;
    }
    
    public int solution(int n) {
        int answer = n + 1; //다음 큰 숫자는 n보다 큰 자연수
        int nCount = count1(n); //n을 이진수로 변환했을 때 1의 개수
        
        while(true){
            int answerCount = count1(answer);
            if(answerCount == nCount){
                break;
            }
            else{
                answer++;
            }
        }
        return answer;
    }
}

 

이진수 변환 후 1 개수 세는 걸 어떻게 처리해야 하나 고민을 했는데, 간단히 생각하면 쉬운 문제였다.

창의력이 부족한가보다 .. ㅜ 

그저 n+1 부터 차근히 이진수 변환 과정에서 1의 개수를 세고, 같은 경우에 return 해주면 되는 것이었다.

쉽게 쉽게 생각해보자구 !