๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ( Level 2, 2019 ์นด์นด์˜ค ๋ธ”๋ผ์ธ๋“œ)

by ์•ˆ์ฃผํ˜• 2021. 10. 22.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ

์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ ์นด์นด์˜คํ†ก ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ์—์„œ๋Š” ์นœ๊ตฌ๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ๋“ค๊ณผ ๋Œ€ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ณธ๋ž˜ ๋‹‰๋„ค์ž„์ด ์•„๋‹Œ ๊ฐ€์ƒ์˜ ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฑ„ํŒ…๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ์‹ ์ž…์‚ฌ์›์ธ ๊น€ํฌ๋ฃจ๋Š” ์นด์นด์˜คํ†ก ์˜ค

programmers.co.kr

 

ํ†ต๊ณผ ์ฝ”๋“œ

#include <string>
#include <vector>
#include <map>

using namespace std;


struct DB{
    string status;
    string id;
    string name;
};

map<string,string>m;
vector<DB>userDB;

void inp(string s){
    int cnt=0;
    DB db;
    string temp;
    for(int i=0; i<s.length(); i++){
        if(s[i]!=' ') temp+=s[i];
        else{
            if(cnt==0) db.status=temp;
            else if(cnt==1) db.id=temp;
            cnt++;
            temp.clear();
        }
    }
    if(cnt==1) db.id=temp;
    if(cnt==2) db.name=temp;
    if(db.status!="Leave") m[db.id]=db.name;
    userDB.push_back(db);
}

vector<string> solution(vector<string> record) {
    vector<string> answer;

    for(int i=0; i<record.size(); i++){
        inp(record[i]);
        }

    for(int i=0; i<userDB.size(); i++){
        string inp;
        userDB[i].name=m[userDB[i].id];
        if(userDB[i].status=="Leave"){
            inp=userDB[i].name+"๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค.";
            answer.push_back(inp);
        }   
        else if(userDB[i].status=="Enter"){
            inp=userDB[i].name+"๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค.";
            answer.push_back(inp);
        }
    }
    return answer;
}

์‹œ๊ฐ„ ์ดˆ๊ณผ ํ’€์ด

#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct DB{
    string status;
    string id;
    string name;
};
vector<DB>userDB;
void change(string name,string id){
    for(int i=0; i<userDB.size(); i++){
        if(userDB[i].id==id) userDB[i].name=name;
    }
}
string find_name(string id){
    string name;
    for(int i=(int)userDB.size(); i>=0; i--){
        if(userDB[i].id==id) name=userDB[i].name;
    }
    return name;
}
void inp(string s){
    int cnt=0;
    DB db;
    string temp;
    for(int i=0; i<s.length(); i++){
        if(s[i]!=' ') temp+=s[i];
        else{
            if(cnt==0) db.status=temp;
            else if(cnt==1) db.id=temp;
            cnt++;
            temp.clear();
        }
    }
    if(cnt==1) db.id=temp;
    if(cnt==2) db.name=temp;
    if(db.status=="Change"||db.status=="Enter"){
        change(db.name,db.id);
    }
    else if(db.status=="Leave") db.name=find_name(db.id);
    userDB.push_back(db);
}
int main(){

    int n; cin>>n;
    cin.ignore();
    for(int i=0; i<n; i++){
        string s; getline(cin,s);
        inp(s);
    }
    for(int i=0; i<userDB.size(); i++){
        if(userDB[i].status=="Enter") cout<<userDB[i].name<<"๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."<<'\n';
        else if(userDB[i].status=="Leave") cout<<userDB[i].name<<"๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค."<<'\n';
    }
}

๋Œ“๊ธ€