티스토리 뷰

알고리즘 관련/BOJ

BOJ)13701 중복 제거

JASON 자손9319 2017. 1. 6. 14:22

문제: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)13701 중복 제거  (0) 2017.01.06
BOJ)1647 도시 분할 계획  (0) 2017.01.06
BOJ)4948 베르트랑 공준  (0) 2017.01.06
BOJ)12842 튀김 소보루  (0) 2017.01.05
댓글
댓글쓰기 폼