막대기란 문제는 알고리즘을 설명하고, 그 결과를 예측해야 합니다. 사실 여기서 설명하는 알고리즘은 복잡해보이지만, 그것이 무엇을 의미하는지 알면 손쉽게 문제를 풀 수 있습니다. 64와 절반으로 자른다라는 의미만 잘 이해한다면, 쉽습니다. 난이도는 Silver V이지만, 그보다 더 낮아져야 맞을 듯 합니다.

https://www.acmicpc.net/problem/1094
1094번: 막대기
지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대를 만들려고 한다. 막대를 자르는 가장 쉬운 방법은 절반으로 자르는 것이다. 지민이는 아래와 같은 과정을 거쳐서 막대를 자르려고 한다. 지민이가 가지고 있는 막대의 길이를 모두 더한다. 처음에는 64cm 막대 하나만 가지고 있다. 이때, 합이 X보다 크다면,
www.acmicpc.net
어떤 수이든 2진수로 표현할 수 있습니다. 예를 들어서 40이란 숫자를 2의 멱승수로만 표현한다면,
결국 2진수로 표현했을 때, 1인 비트의 갯수가 정답이 됩니다.
제가 짠 소스는 다음과 같습니다. 소스는 참고용으로 봐주세요.
//----------------------------------------------------------------------------------------
// baekjoon #1094 - Bar
// - by Aubrey Choi
// - created at 2019-07-03
//----------------------------------------------------------------------------------------
#include <stdio.h>
int main()
{
int n, c;
scanf("%d", &n);
for(c=0;n;c+=n&1,n>>=1);
printf("%d\n", c);
}
'Programming > BOJ' 카테고리의 다른 글
백준 #1107 리모컨 (0) | 2020.01.02 |
---|---|
백준 #1103 게임 (0) | 2020.01.02 |
백준 #1083 소트(정렬) (0) | 2019.12.31 |
백준 #1081 합 (0) | 2019.12.31 |
백준 #1074 Z (0) | 2019.12.30 |
댓글