๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 2002๋ฒˆ - ์ถ”์›”

by ์•ˆ์ฃผํ˜• 2022. 9. 15.

๋ฌธ์ œ

 

2002๋ฒˆ: ์ถ”์›”

์ž…๋ ฅ์€ ์ด 2N+1๊ฐœ์˜ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ฒซ ์ค„์—๋Š” ์ฐจ์˜ ๋Œ€์ˆ˜ N(1 ≤ N ≤ 1,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋Œ€๊ทผ์ด๊ฐ€ ์ ์€ ์ฐจ๋Ÿ‰ ๋ฒˆํ˜ธ ๋ชฉ๋ก์ด ์ฃผ์–ด์ง€๊ณ , N+2์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์˜์‹์ด

www.acmicpc.net

 

์ฝ”๋“œ

#include <iostream>
#include <unordered_map>
#include <vector>


using namespace std;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int N; cin>>N;
    unordered_map<string, int> um;
    vector<string> inp;
    
    for(int i=0; i<N; i++){
        string _inp; cin>>_inp;
        um.insert({_inp, i});
    }
    
    
    for(int i=0; i<N; i++){
        string _inp; cin>>_inp;
        inp.push_back(_inp);
    }
   
    int cnt = 0;
    
    for(int i=0; i<inp.size(); i++){
        for(int k=i+1; k<inp.size(); k++){
            if(um[inp[i]] > um[inp[k]]){
                cnt++;
                break;
            }
        }
    }
    cout<<cnt;
}

 

ํ’€์ด

๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

5
1 2 3 4 5
2 3 1 5 4

์œ„์™€ ๊ฐ™์€ ์ž…๋ ฅ์ด ์ฃผ์–ด์กŒ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ํ„ฐ๋„ ์ง„์ž… ์ฐจ๋Ÿ‰๋งˆ๋‹ค์˜ ์ˆœ์„œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

[1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5

๊ทธ ํ›„, ํ„ฐ๋„์„ ๋‚˜์˜ค๋Š” ์ฐจ๋Ÿ‰์„ ์‚ดํŽด๋ณด๋Š”๋ฐ, ์ž์‹ ์˜ ์ฐจ๋Ÿ‰ ์ดํ›„๋กœ ๋‚˜์˜ค๋Š” ์ฐจ๋Ÿ‰ ์ค‘์—์„œ ์ž๊ธฐ๋ณด๋‹ค ๋นจ๋ฆฌ ์ง„์ž…ํ–ˆ๋˜ ์ฐจ๋Ÿ‰์ด ์žˆ์œผ๋ฉด ์ถ”์›”์„ ํ•œ ๊ฒƒ์ด ๋ฉ๋‹ˆ๋‹ค.

  • 2๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณด์•˜์„๋•Œ [2] = 2, [1] = 1 ์ด๋ฏ€๋กœ 2๋ฒˆ ์ฐจ๋Ÿ‰์€ ์ถ”์›”ํ•œ ๊ฒƒ์ด ๋ฉ๋‹ˆ๋‹ค.
  • 3์„ ๊ธฐ์ค€์œผ๋กœ ๋ณด์•˜์„ ๋•Œ [3]  = 3, [1] = 1์ด๋ฏ€๋กœ 3๋ฒˆ ์ฐจ๋Ÿ‰์€ ์ถ”์›”ํ•œ ๊ฒƒ์ด ๋ฉ๋‹ˆ๋‹ค.
  • 1์„ ๊ธฐ์ค€์œผ๋กœ ๋ณด์•˜์„ ๋•Œ [1] = 1 ๋ณด๋‹ค ์ž‘์€ ์ฐจ๋Ÿ‰์ด ๋ณธ์ธ ์ดํ›„๋กœ ์—†์œผ๋ฏ€๋กœ ์ถ”์›”ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด ๋ฉ๋‹ˆ๋‹ค.
  • 5๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณด์•˜์„ ๋•Œ [5] = 5, [4] = 4์ด๋ฏ€๋กœ 5๋ฒˆ ์ฐจ๋Ÿ‰์€ ์ถ”์›”ํ•œ ๊ฒƒ์ด ๋ฉ๋‹ˆ๋‹ค.
  • 4๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณด์•˜์„ ๋•Œ [4] = 4๋ณด๋‹ค ์ž‘์€ ์ฐจ๋Ÿ‰์ด ๋ณธ์ธ ์ดํ›„๋กœ ์—†์œผ๋ฏ€๋กœ ์ถ”์›”ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด ๋ฉ๋‹ˆ๋‹ค.

unordered_map์„ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” hash๋กœ ๊ตฌํ˜„๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ฉฐ find์‹œ O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 

map ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋ ˆ๋“œ ๋ธ”๋ž™ํŠธ๋ฆฌ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด์„œ, O(logN)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€