반응형
문제 링크 : https://www.acmicpc.net/problem/18870
풀이
입력받은 배열을 정렬한 뒤 0부터 차례대로 우선순위를 매긴다. 중복되는 수들은 건너뛴다.
map 자료구조에 key 값은 수(좌표), value는 우선순위를 넣어준 다음
원래 배열의 순서대로 우선순위를 알맞게 출력한다.
코드
#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
map<int, int> m;
vector<int> v;
vector<int> ans;
int n;
cin >> n;
for(int i=0; i<n; i++){
int tmp;
cin >> tmp;
v.push_back(tmp);
}
ans = v;
sort(v.begin(), v.end());
m.insert(make_pair(v[0], 0));
int cnt = 1, prior = v[0];
for(int i=1; i<v.size(); i++){
if(v[i] == prior) continue;
else {
m.insert(make_pair(v[i], cnt++));
prior = v[i];
}
}
for(int i=0; i<ans.size(); i++){
cout << m[ans[i]] << ' ';
}
}
반응형
'Programming Solve > BOJ' 카테고리의 다른 글
BOJ 1074 - Z / C++ (0) | 2022.04.21 |
---|---|
BOJ 16928 - 뱀과 사다리 게임 / C++ (0) | 2022.04.18 |
BOJ 15829 - Hashing / C++ (0) | 2022.04.14 |
BOJ 10816 - 숫자 카드 2 / C++ (0) | 2022.04.13 |
BOJ 2609 - 최대공약수와 최소공배수 / Swift (0) | 2022.04.11 |