a = int(input())
b = a // 64
a = a % 64
b = b + (a // 32)
a = a % 32
b = b + (a // 16)
a = a % 16
b = b + (a // 8)
a = a % 8
b = b + (a // 4)
a = a % 4
b = b + (a // 2)
a = a % 2
b = b + a
print(b)
만약 a가 64로 나누어 떨어지면 b에 1이 추가되고 a에는 나머지 0이 저장됩니다.
그러면 다른 연산에서는 값에 변화가 일어나지 않고 1이 출력됩니다.
64로 나누어지지 않으면 a값이 그대로 다음 연산에 사용되고,
a값이 32 또는 16... 등 보다 크면 다시 b에 1이 추가되고
a에는 나머지가 저장됩니다.
이렇게 반복하다 보면 몇 개의 막대를 연결했는지
구할 수 있습니다.
'백준 > Python' 카테고리의 다른 글
[백준] 10718번 Python - We love kriii (0) | 2022.10.18 |
---|---|
[백준] 1676번 Python- 팩토리얼 0의 개수 (0) | 2022.10.14 |
[백준] 10156번 Python- 과자 (0) | 2022.10.13 |
[백준] 2675번 Python - 문자열 반복 (0) | 2022.10.13 |
[백준] 1712번 Python - 손익분기점 (0) | 2022.10.12 |