티스토리 뷰

Algorithm

[백준 18870] 좌표 압축

devbelly 2020. 9. 6. 10:55

문제

www.acmicpc.net/problem/18870

 

알고리즘

좌표압축

 

풀이

상대적인 크기 관계는 유지한 채, 숫자의 크기만 줄이는 테크닉입니다. 이를 위해선 두 개의 배열이 필요합니다. 하나는 원래의 원소를 담고 있는 배열, 나머지는 중복제거를 한 후의 배열입니다. 중복제거를 한 배열의 인덱스가 좌표압축의 결과가 됩니다.

 

코드

#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<n;++i)
#define REP(i,n) for(int i=1;i<=n;++i)
#define FAST cin.tie(NULL);cout.tie(NULL); ios::sync_with_stdio(false)
using namespace std;

int N;
int arr[1000000];
vector<int> vt;
int main() {
    FAST;
    cin >> N;
    rep(i, N) {
        cin >> arr[i];
        vt.emplace_back(arr[i]);
    }
    sort(vt.begin(), vt.end());
    vt.erase(unique(vt.begin(), vt.end()), vt.end());

    rep(i, N) {
        cout << lower_bound(vt.begin(), vt.end(), arr[i]) - vt.begin() << ' ';
    }

    return 0;
}

'Algorithm' 카테고리의 다른 글

[백준 10999] 구간 합 구하기2  (0) 2020.09.07
[백준 5419] 북서풍  (0) 2020.09.06
[백준 1280] 나무 심기  (0) 2020.09.04
[백준 3006] 터보소트  (0) 2020.09.03
[백준 6549] 히스토그램에서 가장 큰 직사각형  (0) 2020.09.02
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함