정화 코딩

[C++] 좌표 압축 (백준 18870번) 본문

PS

[C++] 좌표 압축 (백준 18870번)

jungh150c 2024. 5. 25. 16:14

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int n;
    cin >> n;

    vector<pair<int, int>> data (n);
    vector<int> ans = vector<int>(n);
    for (int i = 0; i < n; i++) {
        cin >> data[i].first;
        data[i].second = i;
    }

    sort(data.begin(), data.end());

    int cnt = 0;
    int tmp = 0;
    ans[data[0].second] = 0;
    int pre = data[0].first;
    for (int i = 1; i < n; i++) {
        if (data[i].first != pre) {
            cnt++;
        }
        ans[data[i].second] = cnt;
        pre = data[i].first;
    }

    for (int x: ans){
        cout << x << ' ';
    }
    cout << '\n';
}

페어 형태로 벡터에 값들을 저장하고 정렬한 뒤 정답 배열에 인덱스 순서대로 답을 채워주었다. C++에서 페어를 처음 써봤다! (정답)

 

Comments