N

(백준 c++)18870 좌표 압축 본문

백준 알고리즘

(백준 c++)18870 좌표 압축

naeunchan 2021. 4. 12. 09:41
728x90
반응형

문제

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.

Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다.

X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.

입력

첫째 줄에 N이 주어진다.

둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다.

출력

첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다.

 

 

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <map>

using namespace std;

int main(void){
    int N, index = 1;
    vector<int> v, tmp;
    map<int, int> m;

    cin >> N;

    for(int i = 0; i < N; i++){
        int n;
        cin >> n;
        
        v.push_back(n);
    }

    tmp = v;
    sort(tmp.begin(), tmp.end());

    for(int i = 0; i < v.size(); i++){
        if(!m[tmp[i]]){
            m[tmp[i]] = index++;
        }
    }

    for(int i = 0; i < N; i++){
        cout << m[v[i]] - 1 << " " ;
    }
    
    return 0;
}
728x90
반응형

'백준 알고리즘' 카테고리의 다른 글

(백준 c++)18258 큐 2  (0) 2021.04.12
(백준 c++)1874 스택 수열  (0) 2021.04.12
(백준 c++)17140 이차원 배열과 연산  (0) 2021.04.09
(백준 c++)17144 미세먼지 안녕!  (0) 2021.04.07
(백준 c++)16235 나무 재테크  (0) 2021.04.06