728x90
https://www.acmicpc.net/problem/1052
- N을 2로 계속 나누는 과정에서 나머지 1이 나오는 경우의 수 = 최종 물이 채워져있는 물병의 개수
- = N을 이진수로 바꿨을 때 1의 개수
// 백준 - 물병(1052)
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.StringTokenizer
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
var st = StringTokenizer(br.readLine())
var N = st.nextToken().toInt()
val K = st.nextToken().toInt()
// N을 2로 계속 나눴을 때, 그 과정에서 나머지 1이 생기는 수 => 최종 물이 채워져있는 물병의 개수
// 위의 수는 N을 이진수로 바꿨을 때 1의 개수를 세어보는 것과 같음
var answer = 0
// K개 이하로 만들어질 때까지 물병 구매
while(Integer.bitCount(N) > K) {
N++
answer++
}
print(answer)
}
728x90
'Programming > Kotlin' 카테고리의 다른 글
[백준/Kotlin] 다이어트(1484) (0) | 2024.05.14 |
---|---|
[백준/Kotlin] 연구소 3(17142) (0) | 2024.05.10 |
[백준/Kotlin] 줄 세우기(2252) (0) | 2024.05.09 |
[백준/Kotlin] 하늘에서 별똥별이 빗발친다(14658) (0) | 2024.05.09 |
[백준/Kotlin] 테트로미노(14500) + Java 코드 추가 (0) | 2024.05.08 |