※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 1094번 문제인 막대기이다.
문제는 아래 링크를 확인하자.

www.acmicpc.net/problem/1094

 

1094번: 막대기

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

www.acmicpc.net

이 문제는 주어진 정수의 이진수를 생각하면 간단히 풀 수 있다.

문제에서 구하는 수는 주어진 수를 이진수로 표현했을 때 1의 개수와 같다는 것을 쉽게 알 수 있기 때문이다.

이를 바탕으로 구현하면 코드를 간단히 작성할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
using std::cin; using std::cout;
int main()
{
    int x = 0, ans = 0;
    cin >> x;
    while (x > 0) {
        if (x & 1) ans += 1;
        x >>= 1;
    }
    cout << ans;
    return 0;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 2563 // C++] 색종이  (0) 2021.03.20
[BOJ 10610 // C++] 30  (0) 2021.03.19
[BOJ 1476 // C++] 날짜 계산  (0) 2021.03.17
[BOJ 12728 // C++] n제곱 계산  (0) 2021.03.16
[BOJ 2294 // C++] 동전 2  (0) 2021.03.15

+ Recent posts