Gidhub BE Developer

[Programmers] 42888. 오픈채팅방

2018-10-02
goodGid

Problem

Problem URL : 오픈채팅방


[1] Answer Code (18. 10. 02)

#include <string>
#include <vector>
#include <iostream>
#include <sstream>
#include <map>
#define p pair<string,string>
using namespace std;

vector<string> solution(vector<string> record) {
    vector<string> answer;
    vector<p> ans;
    map<string, string> m;
    
    for(int i=0; i<record.size(); i++){
        istringstream iss(record[i]);
        vector<string> v;
        
        for(string s; iss >> s;){
            v.push_back(s);
        }
        
        ans.push_back({ v[0],  v[1]});
        
        if(v[0][0] == 'E'){ // Enter
            m[v[1]] = v[2];
        }
        else if(v[0][0] == 'C'){ // Change
            m[v[1]] = v[2];
        }
    } // end of for i
    
    for(int i=0; i<ans.size(); i++){
        string state = ans[i].first;
        string uid = ans[i].second;
        map<string,string>::iterator iter;
        iter = m.find(uid);
        string name = iter->second;
        if(state[0] == 'E'){
            name += "님이 들어왔습니다.";
            answer.push_back(name);
        }
        else if(state[0] == 'L'){
            name += "님이 나갔습니다.";
            answer.push_back(name);
        }
    }
    return answer;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    
    vector<string> record = {
        {"Enter uid1234 Muzi"},
        {"Enter uid4567 Prodo"},
        {"Leave uid1234"},
        {"Enter uid1234 Prodo"},
        {"Change uid4567 Ryan"}
    };
    
    solution(record);
    return 0;
}

Review

  • (2018년)KAKAO BLIND RECRUITMENT 기출 문제.

  • map 컨테이너를 사용해서 풀이했다.

  • 풀고나면 그렇게 어려운 문제는 아니였다.

  • 코딩 테스트를 보기전에 지레 겁부터 먹으면 풀 수 있는 것도 못 푸는것 같다.


Comments

Content