백준 1094 막대기 / python

이유참치·2025년 7월 31일

백준

목록 보기
9/248

문제 : 1094

풀이 point

문제가 잘 이해가 되지 않을 수 있는데 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

profile
임아리 - 대학생

0개의 댓글