반응형
3460번: 이진수
양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.
www.acmicpc.net
테스트 케이스 T크기의 배열을 만들어준 다음, T의 모든 원소를 이진수로 변환하고 1의 인덱스를 출력해주면 된다. 이진수 변환은 손으로 직접 해본 결과 몫이 0일때까지 계속 나눠주다가 몫이 0이 되면 끝에 1을 붙여주면 된다.
#include <iostream>
#include <vector>
using namespace std;
int main(){
int T, num, idx;
cin >> T;
int* ary = new int[T]; // 크기가 T인 배열 동적 할당
for(int i = 0; i < T; i++)
cin >> ary[i];
for(int i = 0; i < T; i++){
num = ary[i];
// 이진수 변환 - 몫이 0일때까지 계속 나눈다
idx = 0;
while(num / 2 != 0){
if(num % 2 == 1)
cout << idx << " ";
idx++;
num /= 2;
}
cout << idx;
cout << endl;
}
delete[] ary; // 할당 해제
return 0;
}
반응형
'알고리즘 문제풀이 > 추천 문제' 카테고리의 다른 글
[ 백준 10870 ] 피보나치 수 5 (C++) (0) | 2022.01.17 |
---|---|
[ 백준 2460 ] 지능형 기차2 (C++) (0) | 2022.01.17 |
[ 백준 10818 ] 최소, 최대 (C++) (0) | 2022.01.17 |
[ 백준 2501 ] 약수 구하기 (C++) (0) | 2022.01.17 |
문제 출처 (0) | 2022.01.17 |