728x90
1094번 막대기 입니다.
https://www.acmicpc.net/problem/1094
일단 정답 코드입니다.
X = int(input())
print(list(bin(X)[2:]).count('1'))
64cm막대기를 반씩 자르고 한쪽만 가져가는 동작을 계속하면
64, 32, 16, 8, 4, 2, 1 의 막대기중 하나를 선택할 수 있습니다.
이 막대를 가지고 Xcm의 막대를 만들 때 막대를 최소로 사용하는 방법을 출력하는 것입니다.
이때 X가 23이라고 하면 우리는 (16, 4, 2, 1) 4개만 가지고 만들 수 있습니다.
그런데 이때 23을 이진수로 변환하면 10111이 될것입니다.
즉 X를 이진 변환후 1의 수를 카운팅하면 됩니다.
728x90
'IT 이야기 > 알고리즘 공부' 카테고리의 다른 글
[Programmers][Python][해시] 베스트앨범 - level3 (0) | 2021.02.05 |
---|---|
[Programmers][Python][연습문제] 야근지수 - level3 (0) | 2021.02.03 |
Backjoon 1010번 다리놓기 (0) | 2020.11.30 |
[Programmers] 섬 연결하기 (0) | 2020.11.26 |
[Programmers] 숫자 게임 (0) | 2020.11.20 |
댓글