코딩테스트

[백준 1094번][python] 막대기

도도o 2024. 9. 21. 21:56

 

 

X = int(input())

sticks = [64]

while sum(sticks) > X:
    new_smallest_stick = sticks[-1] / 2
    sum_sticks = sum(sticks)
    sticks[-1] = new_smallest_stick
    if sum_sticks - new_smallest_stick < X:
        sticks.append(new_smallest_stick)

print(len(sticks))

 

 

 

다른 사람 풀이

 

숏코딩

print(bin(int(input())).count('1'))

 

필요한 막대의 개수이기 때문에, 이진법으로 표현해서 1의 개수를 출력해도 된다.

 

 

 

출처

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