No Rules Rules

오픈채팅방 (feat. 프로그래머스, 42888번) 본문

생활/코테

오픈채팅방 (feat. 프로그래머스, 42888번)

개발하는 완두콩 2022. 7. 20. 14:22
728x90
반응형
// woohyeon.kim
#include <string>
#include <vector>
#include <sstream>
#include <map>

using namespace std;

vector<string> token_string(const string& text)
{
    vector<string> result;
    string token;
    stringstream ss(text);
    while(getline(ss, token, ' '))
    {
        result.push_back(token);
    }
    return result;
}

vector<string> solution(vector<string> record) {
    map<string, string> users;
    for(auto iter = record.rbegin(); iter != record.rend(); ++iter)
    {
        if(((*iter).find("Enter") != string::npos) ||
            ((*iter).find("Change") != string::npos))
        {
            auto tokens = token_string(*iter);
            if(users.find(tokens[1]) == users.end())
            {
                users[tokens[1]] = tokens[2];
            }
        }
    }
    vector<string> answer;
    for(const auto& record_item : record)
    {
        auto tokens = token_string(record_item);
        if(tokens[0] == "Enter")
            answer.push_back(users[tokens[1]] + "님이 들어왔습니다.");
        else if(tokens[0] == "Leave")
            answer.push_back(users[tokens[1]] + "님이 나갔습니다.");
    }
    return answer;
}
// *&)*@*
Change 문자열이 포함된 record는 answer에 담지 않는다는게 핵심.

 

728x90
반응형
Comments