
https://www.acmicpc.net/problem/1094
입력받은 x가 64면 그냥 1을 출력하고 종료하면 된다.
아닌 경우에 대해서는, 자른 막대기들의 길이 합 sum(sticks)가 x가 아닌 동안 자르고 비교하고 막대기를 추가하는 과정을 반복해야 한다.
minStick = min(sticks) 현재 막대기들 중 가장 작은 막대기 찾기half = minStick // 2 가장 작은 막대기를 절반으로 자른 막대기의 길이 구하기sticks.remove(minStick) 절반으로 잘랐으므로, 원래 제일 작았던 막대기는 이제 없는 것이다. 리스트에서 제거해준다.sticks.append(half) 절반 조각이 생긴 것이므로 이를 추가해준다.continue 한다. 막대기들의 길이 합이 x보다 작은 경우에는 아까 잘라낸 막대기의 절반 조각을 다시 리스트에 append 해준다. 아까 절반으로 쪼갠 일을 없던 일 취급하는 것과 같다!필요한 막대기의 총 개수는 len(sticks)로 구할 수 있다. 이를 출력하고 종료한다.
x = int(input())
stick = 64
sticks = [stick]
if x == 64:
print(1)
else:
while sum(sticks) != x:
minStick = min(sticks)
half = minStick // 2
sticks.remove(minStick)
sticks.append(half)
if sum(sticks) >= x:
continue
else:
sticks.append(half)
print(len(sticks))