STUDYING/Algorithm

[Programmers] 오픈채팅방

EOZIN 2021. 9. 27. 00:31
728x90

https://programmers.co.kr/learn/courses/30/lessons/42888

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

C++로 풀었었네

// #include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <map>

using namespace std;

vector<string> solution(vector<string> record) {
    vector<string> answer;
    queue<pair<string, string>> q;
    map<string, string> m;

    for (int i = 0; i < record.size(); ++i) {
        string tmp;
        vector<string> v;

        for (int j = 0; j < record[i].size(); ++j) {
            if (record[i][j] == ' ') {
                v.push_back(tmp);
                tmp.clear();
            }
            else tmp.push_back(record[i][j]);
        }

        v.push_back(tmp);

        if(v[0] == "Change"){
            m[v[1]] = v[2];
        } else if(v[0] == "Leave") {
            q.push({v[0], v[1]});
        } else {
            q.push({v[0], v[1]});
            m[v[1]] = v[2];
        }
    }

    while(!q.empty()) {
        string x = q.front().first;
        string y = q.front().second;

        string result;

        q.pop();

        if (x == "Enter") {
            result = m[y] + "님이 들어왔습니다.";
        } else {
            result = m[y] + "님이 나갔습니다.";
        }

        answer.push_back(result);
    }

    return answer;
}