본문 바로가기

알고리즘 관련/BOJ

BOJ)13701 중복 제거

문제:icpc.me/13701


중복되서 입력 된 수를 제거하고 출력하면 되는 문제이다.


하지만 메모리 제한이 8MB밖에 안되기 때문에 수를 그냥 입력받아서 저장하기에는 무리가 있다.


그래서 비트마스킹을 이용하여 사용한 수에 해당하는 비트를 켜주고 수를 받았을 때 비트가 켜져 있는지 확인하고 출력하면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <cstdio>
#include <algorithm>
using namespace std;
int c[+ (<< 20)];
int a, x, y;
int main()
{
    while (scanf("%d"&a) != EOF)
    {
        x = a / 32;
        y = a % 32;
        if (c[x] & (<< y))
            continue;
        printf("%d ", a);
        c[x] += (<< y);
    }
    return 0;
}
cs


'알고리즘 관련 > BOJ' 카테고리의 다른 글

BOJ)1654 랜선 자르기  (0) 2017.01.06
BOJ)4627 뛰어라 도마뱀  (0) 2017.01.06
BOJ)1647 도시 분할 계획  (0) 2017.01.06
BOJ)4948 베르트랑 공준  (0) 2017.01.06
BOJ)12842 튀김 소보루  (0) 2017.01.05