초보 개발자의 이야기, 릿허브

[C++] 백준 10867번 중복 빼고 정렬하기 본문

코딩테스트/📗 백준 (BOJ)

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

릿99 2022. 2. 24. 11:17
728x90
반응형
1. 문제이해

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

 

10867번: 중복 빼고 정렬하기

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

www.acmicpc.net

 

N개의 정수를 입력받아, 중복을 제거해 오름차순으로 정렬하는 것이 목표이다.

 

 

 

2. 문제풀이

 

N개의 정수를 입력받고, 중복을 제거한 후 정렬하기만 하면 되는 간단한 문제이다.

중복을 제거한다는 점에만 주의해주면 되는데, 필자는 set container를 이용해 풀이했다.
set은 key 라 불리는 원소의 집합으로, 중복을 자동으로 제거하고, 삽입이 되면 자동으로 정렬된다.

(사실상 set을 쓰면 너무나도 간단한 문제이다.)

 

 set container 에 대한 자세한 설명과 예제는 아래 포스팅을 참고하자.

https://beginnerdeveloper-lit.tistory.com/26

 

[C++] 백준 1822번 차집합

1. 문제이해 1822번: 차집합 (acmicpc.net) 1822번: 차집합 첫째 줄에는 집합 A의 원소의 개수 n(A)와 집합 B의 원소의 개수 n(B)가 빈 칸을 사이에 두고 주어진다. (1 ≤ n(A), n(B) ≤ 500,000)이 주어진다. 둘..

beginnerdeveloper-lit.tistory.com

 

 

 

3. 소스코드
#include <iostream>
#include <set>
using namespace std;

int main() {
	set<int> s;
	set<int> ::iterator t;
	int N;
	int element;

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

	for (t = s.begin(); t != s.end(); t++) {
		cout << *t << " ";
	}

	return 0;
}

앞서 이야기한대로, set을 이용해 간단하게 구현해주었다.

N개의 정수를 입력받아, int형 set s 에 삽입한다.

set은 원소를 삽입할 때, 자동으로 중복을 제거하고 중복값을 삭제하기때문에 값을 넣어주기만 하면 된다.

for문을 통해 값을 모두 입력받고, s에 넣은 뒤, 다시 for문을 통해 s의 원소들을 출력했다.

 

 


문제에 대한 질문이나 지적은 언제나 감사하게 받고 있습니다.😊

 

 

 

 

 

728x90
반응형