코딩테스트 대비를 위해 도움이 될만한 문제 추천 블로그가 있어서 이 단계대로 코테를 준비합니다.

참조 사이트: http://covenant.tistory.com/224

 

코딩테스트 대비를 위한 백준 문제 추천

코딩테스트 대비를 위한 백준 문제 추천 끝 없는 훈련만이 실전에서 흐트럼없이 정답을 향해서 움직일 수 있습니다. (Photo by Specna Arms on Unsplash) 작년 한 해 수많은 코딩테스트를 직접 경험하고

covenant.tistory.com

Part 1 준비운동 - 이진수 (백준 3460)

문제 출처: https://www.acmicpc.net/problem/3460

 

3460번: 이진수

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

www.acmicpc.net

 

풀이

많은 랭커분들이 쉬프트연산자(<<, >>)와 비트연산자(&, |, ^)를 이용해 한두줄 남짓 코드로 작성하셨던데 

비트마스크 관련 문제를 풀게 아니라면 그냥 제 코드처럼 직관적으로 작성하는 것도 괜찮다고 생각합니다.

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
int main()
{
    int t, n, cnt;
    cin >> t;
    for(int i=0;i<t;i++){
        cin >> n;
        cnt = 0;
        while (n != 0) {
            if (n % 2 == 1)cout << cnt << " ";
            cnt++;
            n /= 2;
        }
        cout << '\n';
    }
    return 0;
}
cs

 

결과

 

+ Recent posts