#유형 : 그리디, 규칙

#난이도 : 실버 1

# 입력받는 숫자 N이 2^n일 경우, 물병을 하나로 합칠수 있음(2, 4, 8, 16 .. )

# 물병을 하나로 합쳐가며 K개를 넘기지 않도록 반복문을 돌린다.

 

1. 입력받는 숫자 N을 물병 하나로 합쳐간다.(N/=2)

2. 1번의 과정에서 나머지가 발생하는 경우 COUNT += 1

3. 반복문을 돌리며, COUNT가 K보다 작은 경우 리턴

4. 아닌 경우, N에 숫자를 더해가며 반복

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
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class p1052 {
    static int N,K;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        K = Integer.parseInt(st.nextToken());
        
        int pls = 0;
        while(true) {
            
            int tmp = N + pls;
            int count = 0;
            
            while(tmp > 0) {
                
                if(tmp % 2 != 0)
                    count++;
                //System.out.println(tmp + " // " + count);
                tmp /= 2;
                
            }
            
            if(count <= K)
                break;
            
            pls++;
        }
        
        System.out.println(pls);
    }
}
 
cs

'백준' 카테고리의 다른 글

#백준_1038 괄호 - Java 자바  (0) 2021.11.21
#백준_9012 괄호 - Java 자바  (0) 2020.07.06
#백준_10828 스택 - Java 자바  (0) 2020.07.06
#백준_1629 곱셈 - Java 자바  (0) 2020.07.01
#백준_2096 내려가기 - Java 자바  (0) 2020.06.27

+ Recent posts