#유형 : 문자열

#난이도 : LV2

# 주어진 숫자보다 크면서 이진수 변환시 1의 개수가 같은 최소의 수를 찾는 문제로, 입력받는 숫자 n을 2진수 변환 후 반복문을 통해 숫자를 찾으면 된다.

 

 

 

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
import java.util.*;
class Solution {
    public int solution(int n) {
        int answer = 0;
        
        String st = Integer.toBinaryString(n);
        int cnt = 0;
        for(int i=0; i<st.length(); i++){
            if(st.charAt(i) == '1')
                cnt++;
        }
        
        for(int i=n+1; i<=10000000; i++)
        {
            String str = Integer.toBinaryString(i);
            int count = 0;
            for(int j=0; j<str.length(); j++){
                if(str.charAt(j) == '1')
                    count++;
            }
            if(count == cnt){
                answer = i;
                break;
            }
                
        }
        
        return answer;
    }
}
cs

+ Recent posts