250x250
Notice
Recent Posts
Recent Comments
관리 메뉴

탁월함은 어떻게 나오는가?

[백준 알고리즘] 18870번 좌표 압축 [C++, javascript] 본문

[Snow-ball]프로그래밍(컴퓨터)/Algorithm Training

[백준 알고리즘] 18870번 좌표 압축 [C++, javascript]

Snow-ball 2022. 3. 14. 20:07
반응형

문제

수직선 위에 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을 공백 한 칸으로 구분해서 출력한다.

 

 

 

 

 

 

 

 

 

코드

C++ :

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
32
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
    vector<int> vec;
    vector<int> org;
 
    int N;
    cin >> N;
    for (int i = 0; i < N; i++)
    {
        int x;
        cin >> x;
        vec.push_back(x);
        org.push_back(x);
    }
 
    sort(vec.begin(), vec.end());
    vec.resize(unique(vec.begin(), vec.end()) - vec.begin());
 
    for (int x : org)
    {
        int print = lower_bound(vec.begin(), vec.end(), x) - vec.begin();
        cout << print << ' ';
    }
 
    return 0;
}
cs

 

 

JavaScript : 

1
2
3
4
5
6
7
8
9
10
11
12
// const arr = [2, 4, -10, 4, -9];
const arr = [100099910009991000999];
 
const copyArr = Array.from(new Set([...arr])).sort((a, b) => a - b);
const myMap = new Map();
 
[...copyArr].forEach((el, index) => myMap.set(el, index));
 
let answer = "";
arr.forEach((el) => (answer += myMap.get(el) + " "));
console.log("answer : ", answer);
 
cs

 

 

 

 

 

 

 

베타존 : 네이버쇼핑 스마트스토어

나를 꾸미다 - 인테리어소품 베타존

smartstore.naver.com

 

반응형
Comments