ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [BaekJoon] 18870๋ฒˆ ์ขŒํ‘œ์••์ถ•
    SW Test/BaekJoon 2021. 8. 22. 21:23
    ๋ฐ˜์‘ํ˜•
    • ์ด ๊ธ€์€ C++๋กœ ํ’€์ด๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ๋ฌธ์ œ

     

    ์˜ˆ์‹œ


    ํ’€์ด

    • ์ฒ˜์Œ ์ƒ๊ฐํ–ˆ์„ ๋•Œ ์ •๋ ฌ ํ›„ map์„ ํ†ตํ•ด ์ค‘๋ณต์ œ๊ฑฐํ•˜๊ณ  ๊ฐ’์„ key๋กœ 0๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ๋‹ด๊ธฐ๋Š” count๋ฅผ value๋กœ ํ•˜์—ฌ ์ถ”๊ฐ€ํ•œ ํ’€์ด๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด map์€ insert์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(logN), ์ดํ›„ ์ •๋ ฌ์— ๋Œ€ํ•œ ์‹œ๊ฐ„๋ณต์žก๋„ O(NlogN)์ด ๊ฑธ๋ ค ์ „์ฒด ์ˆ˜์— ๋Œ€ํ•ด์„œ ํƒ์ƒ‰ํ•  ๋•Œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(N2logN)์ž…๋‹ˆ๋‹ค.
    • ๋‹ค์Œ ํ’€์ด๋Š” ๋ฌด์กฐ๊ฑด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋˜๋Š”๋ฐ map์ด ์•„๋‹Œ unordered_map์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๊ฐ€ ์•„๋‹Œ ํ•ด์‰ฌ ํ…Œ์ด๋ธ”๋กœ ๊ตฌํ˜„์ด ๋˜์–ด O(1)๋งŒ์— ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    #include<iostream>
    #include<vector>
    #include<unordered_map>
    #include<algorithm>
    using namespace std;
    
    int main(){
        int arr[1000005];
        int vec[1000005];
        int num;
        cin>>num;
    
        for(int i=0;i<num;i++){
            cin>>arr[i];
            vec[i] = arr[i];
        }
    
        sort(arr, arr+num);
    
        int idx = 0;
        unordered_map<int,int> m;
        for(int i=0;i<num;i++){
            if(m.count(arr[i]) == 0){
                m.insert({arr[i],idx++});
            }
        }
    
        for(int i = 0;i<num;i++){
            cout<<m[vec[i]]<<' ';
        }
    
    }
    • ์ด ํ’€์ด๊ฐ€ ์•„๋‹Œ ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ๋„ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„์Šทํ•˜๊ฒŒ ์ •๋ ฌํ•œ ํ›„ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ lower_bound ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ํ•ด๋‹น ์ธ๋ฑ์Šค๋ฅผ ๊ตฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    int main(){
        int num;
        cin>>num;
    
        int origin[1000000];
        vector<int> v;
        vector<int> vec;
        for(int i=0;i<num;i++){
            cin>>origin[i];
            v.push_back(origin[i]);
        }
    
        sort(v.begin(), v.end());
    
        int s = v[0];
        int idx = 0;
        vec.push_back(s);
    
        for(int i=1;i<num;i++){
            if(v[i] != s){
                vec.push_back(v[i]);
                s = v[i];
            }
        }
    
        for(int i=0;i<num;i++){
            cout<<lower_bound(vec.begin(), vec.end(), origin[i]) - vec.begin()<<' ';
        }
    
    }
    • ์ถ”๊ฐ€๋กœ ๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.
    ๋ฐ˜์‘ํ˜•
Designed by Tistory.