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

urzi·2022년 4월 9일
0

PS

목록 보기
20/36

문제

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

알고리즘

기본

풀이

특별한 알고리즘은 필요 없고 Integer의 toBinaryString 메소드만 기억하면 된다.
처음에 while문으로 이진수를 구했다가 시간초과가 떴다.
이진수로 변환하고 1의 개수만 구하면 된다.

코드

class Solution {
    public int solution(int n) {
        int answer = 0;
        int decimal = n;
        int check = 0;

        String binary = Integer.toBinaryString(decimal);
        for (int i = 0; i < binary.length(); i++) {
            if (binary.charAt(i) == '1') {
                check++;
            }
        }


        while (true) {
            int compareDecimal = ++n;
            int compareCheck = 0;
            String compareBinary = Integer.toBinaryString(compareDecimal);

            for (int i = 0; i < compareBinary.length(); i++) {
                if (compareBinary.charAt(i) == '1') {
                    compareCheck++;
                }
            }

            if (check == compareCheck) {
                answer = compareDecimal;
                break;
            }
        }

        return answer;
    }
}
profile
Back-end Developer

0개의 댓글