๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm๐Ÿฐ/๋ฐฑ์ค€

[๋ฐฑ์ค€] 18870 ์ขŒํ‘œ ์••์ถ•

by Jouureee 2021. 2. 19.

๋ฌธ์ œ :

www.acmicpc.net/problem/18870

 

18870๋ฒˆ: ์ขŒํ‘œ ์••์ถ•

์ˆ˜์ง์„  ์œ„์— N๊ฐœ์˜ ์ขŒํ‘œ X1, X2, ..., XN์ด ์žˆ๋‹ค. ์ด ์ขŒํ‘œ์— ์ขŒํ‘œ ์••์ถ•์„ ์ ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค. Xi๋ฅผ ์ขŒํ‘œ ์••์ถ•ํ•œ ๊ฒฐ๊ณผ X'i์˜ ๊ฐ’์€ Xi > Xj๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ขŒํ‘œ์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค. X1, X2, ..., XN์— ์ขŒ

www.acmicpc.net

๋ถ„์„ :

์ขŒํ‘œ ์••์ถ•์€ ์ˆ˜์ง์„  ์ƒ ๋„“์€ ๋ฒ”์œ„์— ๋น„ํ•ด ์ ์€ ์ ์„ ์ฐ๋Š” ๊ฒƒ์ด ๋น„ํšจ์œจ์ ์ด๋ผ๋Š” ์ ์—์„œ ๊ณ ์•ˆํ•œ ๊ธฐ์ˆ ์ด๋‹ค. ( ์œ„ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€๋‹ค.)

์ ์˜ ์ขŒํ‘œ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜์—ฌ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธฐ๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

unique 

ex > unique(index.begin(), index.end())

index ๋ผ๋Š” ๋ฒกํ„ฐ์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ์›์†Œ๋ฅผ ์žฌ๋ฐฐ์—ดํ•œ๋‹ค.

๋งŒ์•ฝ ๋ฒกํ„ฐ ์•ˆ์— 

- 10, 2, 4, 4, 9 ๊ฐ€ ์žˆ๋‹ค๋ฉด -10, 2, 4, 9 ๋กœ ๋งŒ๋“ ๋‹ค !! ๋’ค์—๋Š” ๋ฌด์Šจ ๋‹ค๋ฅธ ์ˆซ์ž๊ฐ€ ๋ถ™๋Š” ๊ฑฐ ๊ฐ™์€๋ฐ ์ดํ•ด๊ฐ€ ์ž˜ ๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„ ..

 

lower_bound 

ex> lower_bound(index.begin(), index.end(), c)

index ๋ผ๋Š” ๋ฒกํ„ฐ์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ค‘์— ๊ฐ’์ด c ์ด์ƒ์ธ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๋Š”๋‹ค. 

 

upper_bound :

ex> upper_bound(index.begin(), index.end(), c)

index ๋ผ๋Š” ๋ฒกํ„ฐ์˜ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ค‘์— ๊ฐ’์ด c๊ฐ€ ์ดˆ๊ณผ๋˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๋Š”๋‹ค. 

 

 

 

 

c++ ์ฝ”๋“œ :

//
//  18870_cc.cpp
//  SOMA๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป
//
//  Created by JoSoJeong on 2021/02/18.
//

#include <stdio.h>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;



int main(){
    
    int N;
    cin >> N;
    vector<int> index(N);
    vector<int> points(N);
    
    for(int i = 0; i < N; i ++){
        cin >> index.at(i);
        points.at(i) = index.at(i);
    }
    sort(index.begin(), index.end());
    index.erase(unique(index.begin(), index.end()), index.end());
    
    for(auto& c : points){
        cout << lower_bound(index.begin(), index.end(), c) - index.begin() << " ";
    }
    cout << endl;
    
    return 0;
}

๋Œ“๊ธ€