본문 바로가기
BOJ

[BOJ] 3460번 - 이진수

by 곰제비 2022. 6. 14.

<접근 방식>

주어진 10진수를 2진수로 나타내어 1의 위치를 표시하는 문제이다.

%와 / 연산자를 통해 이진수를 구하고 1인 경우만 출력해주도록 한다.

테스트 케이스마다 자리를 표시하는 count를 0으로 초기화해야 한다.

<전체 코드>

#include <iostream>

using namespace std;

int T, n, num;

int main()
{
	cin.tie(0);
	ios_base::sync_with_stdio(false);
	
	cin >> T;

	while (T--) {
		cin >> n;
		int count = 0;
		while (n > 0) {
			num = n % 2;
			n /= 2;
			if (num == 1)
				cout << count << " ";
			count++;
		}
	}
}

<문제 링크>

https://www.acmicpc.net/problem/3460

 

3460번: 이진수

양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.

www.acmicpc.net

 

'BOJ' 카테고리의 다른 글

[BOJ] 1735번 - 분수 합  (0) 2022.06.15
[BOJ] 2609번 - 최대공약수와 최소공배수  (0) 2022.06.14
[BOJ] 2501번 - 약수 구하기  (0) 2022.06.14
[BOJ] 2740번 - 행렬 곱셈  (0) 2022.06.14
[BOJ] 17298번 - 오큰수  (0) 2022.06.14