알고리즘/programmers

프로그래머스 레벨2 다음 큰 숫자 (JAVA)

dev-jo 2021. 7. 20. 00:36

무지성 반복문..!!

 

이번에 푼 쉬운 레벨2 문제..!

 

 

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

 

코딩테스트 연습 - 다음 큰 숫자

자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니

programmers.co.kr

 

모든 코드는 GitHub 에 올려놓았다.

 

어 음.. 쉽다.. 설명할게 따로 없다..

 

그냥 생각 없이 푸니까 10분 정도 걸린 거 같다.

 

코드를 보자..!

class Solution {
    public int solution(int n) {
        int start = n + 1;

        int count = 0;
        while (n >= 1) {
            if(n % 2 == 1) {
                count++;
            }
            n = n / 2;
        }

        while (true) {
            int target = start;
            int targetCount = 0;

            while (target >= 1) {
                if(target % 2 == 1) {
                    targetCount++;
                }

                target = target / 2;
            }

            if(count == targetCount) {
                break;
            }
            start++;
        }

        return start;
    }
}

 

내장 함수 2진법 변환을 쓸까도 했지만

 

그냥 2진법으로 내가 바꿔주고 1을 카운트 해준후

 

n + 1부터 반복문을 돌려주었다..

 

끝.

 

이문제는 진짜 쓸게 없다..