[백준/파이썬] 1094번 막대기 풀이

업데이트:



문제 정보


풀이

문제

길이 64 막대기를 잘라서 길이 합이 x가 되도록 만들 때, 필요한 막대기 개수를 구하는 문제입니다.

코드

x = int(input())

sticks = [64]

while sum(sticks) > x:
    sticks.sort(reverse=True)
    sticks[-1] //= 2
    if sum(sticks) >= x:
        continue
    sticks.append(sticks[-1])
print(len(sticks))

설명

가장 짧은 막대기를 반으로 자르고, 잘라낸 뒤 합이 x 이상이면 한 조각을 버립니다. 합이 x보다 작아지면 버리지 않고 두 조각 모두 유지합니다.

이 과정을 반복하면 최종 막대기 개수가 답입니다.



댓글남기기