
#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로 갱신함(다음 라운드에서 몇 번이 되는지를 알 수 있음)
두 번호가 같아지는 순간까지의 라운드 수를 출력함ㄴ

#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의 개수를 출력한다(필요한 막대의 개수)