소프트웨어/백준

백준 BOJ <1094번> 막대기 || 파이썬

정베디 2023. 8. 23.

www.acmicpc.net/problem/1094

 

1094번: 막대기

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

www.acmicpc.net

문제 요약:

n을 입력 받았을 때, 그 n의 값을 64, 32, 16, 8, 4, 2, 1(cm) 막대기를 몇 개 이어야 만들 수 있을까?

23은 16+4+2+1 이므로 4개.

이 문제를 딱 보면 2진수가 생각난다.
2진수는 수를 다음과 같이 표현한다.
101010101010..

이때
일의 자리수는 2^0
십의 자리수는 2^1..처럼
수를 나타내므로

위 문제와 완벽히 똑같아 진다.

따라서 코드는 다음과 같다.

단, 한 줄

한 줄로 쓸 수 있을 정도로 간단한 문제이다.

input()으로 받아서 int형으로 변환후, 이를 bin() 을 통해 2진수로 바꾼다.
이후 count('1')을 통해 1의 개수를 센다.

댓글