알고리즘 공부/백준

(Python)백준 코딩테스트 연습 - 물병(1052)

HRuler 2023. 6. 20. 13:02

1. 문제

https://www.acmicpc.net/problem/1052

 

1052번: 물병

지민이는 N개의 물병을 가지고 있다. 각 물병에는 물을 무한대로 부을 수 있다. 처음에 모든 물병에는 물이 1리터씩 들어있다. 지민이는 이 물병을 또 다른 장소로 옮기려고 한다. 지민이는 한 번

www.acmicpc.net

2. 풀이

import sys
input = sys.stdin.readline

# n : 물병 수, k : 옮길 수 있는 물병 수
n, k = map(int, input().split())
if n <= k:
    print(0)
else:
    while k != 1 and n != 1:

        squareNum = 1
        while squareNum <= n:
            squareNum *= 2
        squareNum //= 2
#         print("squareNum :", squareNum)
        n -= squareNum
        k -= 1
#     print("n :", n)
    if n == 0:
        n += 1
    squareNum = 1
    while squareNum < n:
        squareNum *= 2
    print(squareNum - n)