새소식

코딩테스트/백준_브론즈

[C++][백준 3460] 이진수

  • -

[문제]

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

 

3460번: 이진수

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

www.acmicpc.net

 

[문제 풀이]

십진수를 이진수로 만들기 위하여 해당 수를 계속해서 2로 나눈뒤 해당 수에 대해서 %2 를 했을때 1이 남는 위치를 계속해서 찾아주자.

[코드]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<iostream>
 
using namespace std;
 
void binary_search(int n){
 
    int count = 0;
 
    while(n>0){
        int temp = n % 2;
        n /= 2;
        if(temp == 1){
            cout<<count<<" ";
        }
        count++;
    }
    cout<<endl;
 
    return;
}
 
int main(){
    int testcase;
    cin>>testcase;
    while(testcase--){
        int n;
        cin>>n;
        binary_search(n);
    }
 
    return 0;
}
cs

 

'코딩테스트 > 백준_브론즈' 카테고리의 다른 글

[C++][백준 9086] 문자열  (0) 2023.03.24
[C++] 더하기 사이클  (0) 2022.11.23
[C++][백준 13458] 시험 감독  (0) 2022.09.14
[C++][백준 5522] 카드 게임  (0) 2022.09.09
[C++][백준 10757] 큰 수 A+B  (0) 2022.09.07
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.