-
백준 1052 물병과거⚰️/코테 (구) 2022. 1. 13. 09:53
https://www.acmicpc.net/problem/1052
백준 1052 물병
fun main() = with(System.`in`.bufferedReader()) { val x = readLine().split(" ").map { it.toInt() } var n = x[0] var k = x[1] var ans = 0 while(true) { var tmp = n var cnt = 0; while(tmp > 0){ if(tmp%2==1){ cnt++ } tmp = tmp/2 } if(cnt<=k){ println(ans) break } n++ ans++ } }
어렵다.... 문제를 이해하는 게 어렵다..... 문제가 너무 어려움 ㅠ
이해하고 보면 별거 아닌문제다.
문제에서 구해야 하는 것은 물병의 개수가 주인공이 들고 갈 수 있는 개수와 같아져야 한다
그리고 물병을 합치려면 물병 안에 있는 물의 양이 동일해야 한다
고로 막 합칠 수가 없고 빈병은 버리는 거고 물이 들어있는 물병이 주인공이 들 수 있는 물병의 개수보다 적던가 같아야 한다
문제를 이해하면 간단한 문제이다
이준수를 이용하면 된다
남은 물병은 n%2==1이면 한 병이 남은 수이다
그리고 우리는 k에 맞출 때까지 물병을 사서 맞춰야 한다
포인트는 물병을 사면 결국 1병이 증가한다는 것!!
결국 할 일은 물병을 1씩 증가시켜며 1의 개수가 k와 같거나 작아지는 수를 찾아서 몇을 증가시켜야 하는지 찾으면 된다.
'과거⚰️ > 코테 (구)' 카테고리의 다른 글
leet Code 83. Remove Duplicates from Sorted List (0) 2022.01.13 leet Code 7. Reverse Integer 문제 (0) 2022.01.12 leetCode twosum (0) 2022.01.12 백준 1076 저항 해결 코틀린(kotlin) (0) 2022.01.05 백준 1009번 문제 코틀린(kotlin) (0) 2022.01.05