Skip to content

Latest commit

 

History

History
31 lines (24 loc) · 971 Bytes

File metadata and controls

31 lines (24 loc) · 971 Bytes

백준 1052번 물병

1052


코드 설명

  • bin 함수를 사용해 이진수로 바꾸어 계산하기 -> 1의 개수가 곧 물병의 개수 1의 위치의 값들을 모두 합하면 물의 양
  • 이진수로 바꾸면 뒤에서부터 계산해야 하므로 보다 편하게 하기 위해 앞 뒤 값을 바꿔준다. -> [::-1] 처음부터 끝까지 -1간격으로
  • 필요한 물의 양을 사기 위한 것은 이진수의 합을 생각하면 된다. -> 이진수의 합을 통해 물병의 개수를 줄여주기

소스코드

  • 메모리 : 30864 KB
  • 시간 : 68 ms
import sys

n, k = map(int, sys.stdin.readline().split())

buy = 0
while bin(n).count('1') > k:
	lst = format(bin(n)[2:])
	lst = lst[::-1]
	idx = lst.index('1')
	buy += 2**idx
	n += 2**idx
	
print(buy)