본문 바로가기

알고리즘/python

[python/파이썬] 백준 1094 막대기

반응형

[문제 출처]

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

 

1094번: 막대기

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

www.acmicpc.net

 

[문제 풀이]

 

64, 32, 16, 8, 4, 2, 1의 길이를 가진 막대기가 있을 때, 몇 개의 막대를 이어 붙였을 때 x를 만들 수 있는지 물어보는 문제이다.

결국 이진법으로 x를 표현했을 때 1이 몇개 있는지 묻는 문제로 이진수로도 풀 수 있다.

#1094

x = int(input())

stick = [64, 32, 16, 8, 4, 2, 1]

cnt = 0

for i in range(len(stick)):
  if x == 0:
    break
  if stick[i] <= x:
    x -= stick[i]
    cnt += 1

print(cnt)
반응형