9/22

chi·2024년 9월 21일

백준

목록 보기
19/20

1057

#include <stdio.h>

int main() {
    int N, a, b;
    int round = 0;

    scanf("%d %d %d", &N, &a, b);

    while (a != b) {
        round++;

        a = (a + 1) / 2;
        b = (b + 1) / 2;
    }

    printf("%d\n", round);

    return 0;
}

풀이

지민과 한수가 같은 번호가 될 때까지 반복함
각 라운드마다 두 번호를 (번호 + 1) / 2로 갱신함(다음 라운드에서 몇 번이 되는지를 알 수 있음)
두 번호가 같아지는 순간까지의 라운드 수를 출력함ㄴ

1094

#include <stdio.h>

int main() {
    int X;
    scanf("%d", &X);

    int count = 0;

    while (X > 0) {
        if (X % 2 == 1) {
            count++;
        }
        X /= 2; 
    }

    printf("%d\n", count);

    return 0;
}

풀이
X의 값을 입력받아 X를 2로 나누면서 이진수로 변환될 때 1의 개수만큼의 막대가 필요함
1이 나올 때마다 카운트를 증가시키고 X를 계속 2로 나누면서 비트 이동을 함
마지막으로 1의 개수를 출력한다(필요한 막대의 개수)

0개의 댓글