본문 바로가기
알고리즘 (C++)

[백준] 10867번: 중복 빼고 정렬하기

by Dev_Hugh 2023. 11. 21.
728x90
반응형

 

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

 

10867번: 중복 빼고 정렬하기

첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

오늘 문제는 정렬 알고리즘을 이용한 풀이입니다.

사실 for문을 돌면서 중복 체크를 해도 되지만... C++의 강력한 STL을 적재적소 해야겠죠?

 

set을 이용해 중복을 방지하며 기본적으로 오름차순으로 정렬 받습니다!

(만약 오름차순을 명시하고 싶다면 set<int, greater<int>> s; 형태로 명시하면 됩니다.)

여기서 중요한 점은 set의 출력인데 Iterator 형태로 출력해야 합니다.

#include<iostream>
#include<vector>
#include<set>

#define FastIO ios::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL);

using namespace std;

int main(void)
{
	FastIO;

	int N = 0; // N개의 정수
	cin >> N;
	set<int> setNums;

	int input = 0;
	for (int i = 0; i < N; i++)
	{
		cin >> input;
		setNums.insert(input);
	}

	set<int>::iterator iter;
	for (iter = setNums.begin(); iter != setNums.end(); iter++)
	{
		cout << *iter << " ";
	}
	cout << "\n";
	return 0;
}
728x90
반응형