[C++] 백준 13701번: 중복 제거

be_clever·2022년 5월 11일
0

Baekjoon Online Judge

목록 보기
147/172

문제 링크

13701번: 중복 제거

문제 요약

입력 받은 수들을 순서대로 출력을 해야 한다. 단, 앞에서 출력한 수가 다시 입력된다면 그 수는 제거해야 한다.

접근 방법

C++ 기준, 메모리 제한이 8MB로 빡빡합니다. 풀이 방법은 간단한데, 비트를 이용하는 방법입니다. 범위를 모두 커버하는 길이의 비트셋을 만들고, 입력받을 때마다 해당 위치의 비트를 1로 바꿔주면 중복을 체크할 수 있습니다.

C++ 기준으로 bitset을 이용하면 간편합니다.

코드

#include <bits/stdc++.h>

using namespace std;

bitset<33554432> bits;

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	while (1) {
		int num;
		cin >> num;

		if (cin.eof())
			break;

		if (!bits[num]) {
			bits[num] = 1;
			cout << num << ' ';
		}
	}

	return 0;
}
profile
똑똑해지고 싶어요

0개의 댓글