티스토리 뷰

간단한 정렬 문제이다.
N이 주어지고 3 * N개의 입력으로 숫자들이 입력된다. 이때 i (1 <= i <= N)에 속하는 숫자들은 반드시 3번 입력이 된다.
이때, 각 i가 2번째로 입력되는 인덱스를 기준으로, 정렬을 해서 출력을 하라고 한다.
N이 1e5이하이므로, O(N) 짜리 배열을 하나 만들고, 각 숫자가 몇번 입력되었는지 count하자. 2번째로 입력된 순간 vector에 넣고 인덱스를 기준으로 정렬을 하면 된다.
#include<iostream>
#include <cstring>
#include <map>
#include <vector>
#include <algorithm>
#define X first
#define Y second
using namespace std;
int N, cnt[100010];
typedef pair<int, int> pii;
vector<pii> v;
bool compare(pii a, pii b) {
return a.Y < b.Y;
}
int main() {
cin >> N;
for (int i=0; i<3*N; i++) {
int x;
cin >> x;
cnt[x]++;
if (cnt[x] == 2) {
v.push_back({x, i});
}
}
sort(v.begin(), v.end(), compare);
for (auto curr : v) {
cout << curr.X << ' ';
}
}'PS > AtCoder' 카테고리의 다른 글
| [AtCoder] ABC307 (0) | 2023.06.24 |
|---|---|
| [Atcoder] ABC306 :: D - Poisonous Full-Course (0) | 2023.06.19 |
| [Atcoder] ABC302 :: E - Isolation (0) | 2023.06.15 |
| [Atcoder] ABC302 :: D - Impartial Gift (2) | 2023.06.13 |
| [Atcoder] ABC305 :: E - Art Gallery on Graph (2) | 2023.06.12 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- GORM
- network
- go
- algorithm
- mmu
- cs
- java
- spring
- Database
- OS
- soft delete
- Effective Java
- effective
- 공지
- ARP
- fiber
- Operating System
- paging
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
