๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/CodeUp

3108 : ์ •์˜ฌ ์ฐธ์—ฌ ํ•™์ƒ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ 1

by ์•ˆ์ฃผํ˜• 2022. 1. 14.

๋ฌธ์ œ

์ •์˜ฌ ์ฐธ์—ฌ ํ•™์ƒ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ 1

10 I 1011 ํ•œ๋ผ์‚ฐ I 999 ๋ฐฑ๋‘์‚ฐ I 999 ์˜ค๋Œ€์‚ฐ D 999 ๋ฐฑ๋‘์‚ฐ I 800 ๋ฐฑ๋‘์‚ฐ D 500 ํ•œ๋ผ์‚ฐ I 900 ๋‚จ์‚ฐ I 950 ๊ธˆ๊ฐ•์‚ฐ I 1205 ์ง€๋ฆฌ์‚ฐ I 700 ๋ถํ•œ์‚ฐ 1 2 4 5 6

codeup.kr

์ฝ”๋“œ

#include <iostream>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;


int N;

struct Data{
    int number;
    string name;
};

bool cmp(const Data &v1, const Data &v2){
    return v1.number<v2.number;
}

map<int,int>check;

int main(){
    cin>>N;
    vector<Data>v;
    for(int i=0; i<N; i++){
        char cmd; int number; string name;
        cin>>cmd>>number>>name;
        if(cmd=='I'){
            if(check[number]==0){
                check[number]=1;
                v.push_back({number,name});
            }
        }
        else if(cmd=='D'){
            if(check[number]==1){
                check[number]=0;
                for(int i=0; i<v.size(); i++){
                    if(v[i].number==number) v.erase(v.begin()+i);
                }
            }
        }
    }
    sort(v.begin(),v.end(),cmp);
    
    
    for(int i=0; i<5; i++){
        int find; cin>>find;
        cout<<v[find-1].number<<' '<<v[find-1].name<<'\n';
        
    }
    
    
}

ํ’€์ด

๋จธ๋ฆฌ ์‹ํžˆ๋ ค๊ณ  ์„ ํƒํ•œ ๋ฌธ์ œ์˜€๋Š”๋ฐ, ๋‚˜๋ฆ„ ๊นŒ๋‹ค๋กœ์› ์Šต๋‹ˆ๋‹ค.
map์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌInsert ๋œ ์ƒํƒœ์ธ์ง€์˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์ฃผ์—ˆ๊ณ , Delete์ž…๋ ฅ ์‹œ erase๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์ดํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฑ„์ 

๋Œ“๊ธ€