본문 바로가기
IT 이야기/알고리즘 공부

Backjoon 1094번 막대기

by Dblog 2020. 12. 1.
728x90

1094번 막대기 입니다. 

https://www.acmicpc.net/problem/1094

 

1094번: 막대기

지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대

www.acmicpc.net

 

일단 정답 코드입니다.

 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

댓글