[코테/JAVA] 연습문제 : 다음 큰 숫자

    728x90
    반응형

    2022.12.13

    코테 문제풀이 22주차 02번 문제

     

     

    문제

      ① 연습문제 : 다음 큰 숫자

     

      ② 링크

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

     

     

    접근방법

      생각해낸 방법은 1가지

      ① 반복문 + Integer.toBinaryString()

     

     

    풀이

      ① 접근방법 :

      ② 풀이

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    class Solution {
        /*
         * Date: 2022-12-13
         * Time: 17:20
         */
        public int solution(int n) {
            return findNumber(n);
        }
     
        /*
         * 조건에 맞는 숫자를 리턴한다.
         * 1. 파라미터로 받은 숫자 n을 2진법으로 변환 후, 1의 갯수를 카운트한다.
         * 2. n을 1씩 더하면서(이하 k) 2진법으로 변환 후, 1의 갯수를 카운트한다.
         * 3. n과 k의 1의 갯수가 같아지면 k를 리턴한다.
         */
        public int findNumber(int n) {
            int k = n;
            String nToBinary = Integer.toBinaryString(n);
            int nToBinaryCnt = chckCntNumber(nToBinary);
     
            while (true) {
                k++;
                String kToBinary = Integer.toBinaryString(k);
                int kToBinaryCnt = chckCntNumber(kToBinary);
                if (nToBinaryCnt == kToBinaryCnt) break;
            }
            return k;
        }
     
        public int chckCntNumber(String str) {
            // Output Instance
            int output = 0;
     
            for (char ch: str.toCharArray()) {
                if (ch == '1') output++;
            }
            return output;
        }
    }
    cs

     

     

    결과

     

     

    주의사항

      ① 없음

    728x90
    반응형

    댓글