#유형 : 그리디, 규칙
#난이도 : 실버 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 |