문제가 잘 이해가 되지 않을 수 있는데 64cm인 막대를 반으로 자르면 32cm 2개가 된다.
만약 X가 32보다 작으면 32cm 2개 중 하나를 반으로 자른다.
만약 X가 32보다 크면 32cm 2개 중 하나를 버린다.
즉 64cm 막대기를 반으로 자르고 자른 막대들을 합쳤을 때 몇개를 합쳐야지 Xcm 막대를 만들 수 있냐는 문제이다.
64cm를 계속해서 반으로 나누니 64, 32, 16, 8, 4, 2, 1로 2의 제곱수들이다.
X 나누기 2를 계속 진행하여 막대의 개수를 구할 수 있다.
X = int(input())
cnt = 0
while X>0:
if X % 2:
cnt += 1
X //= 2
print(cnt)
2025-07-21T08:34:21.837