[ BOJ / Python ] 2885번 초콜릿 식사

황승환·2022년 7월 12일
0

Python

목록 보기
363/498


이번 문제는 그리디 알고리즘을 통해 해결하였다. 우선 초콜릿의 크기를 구하기 위해 2의 제곱 수를 한번씩 비교하며 이전 수보다 크고 현재 수와 같거나 작은 경우를 찾는다. 이를 통해 초콜릿의 크기를 구했다면, 초콜릿의 크기를 2씩 나누며 k에 나눴을 때 나눠 떨어지는 경우를 찾는다.

Code

k = int(input())
choco = 0
for i in range(1, 21):
    if 2**(i-1) < k <= 2**i:
        choco = 2**i
        break
cnt = 0
sz = choco
while sz:
    if k%sz == 0:
        break
    sz //= 2
    cnt += 1
print(choco, cnt)

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글