본문 바로가기
Algorithm/programmers

2019 Kakao blind 42888 - 오픈채팅방(문자열 파싱, 구현) c++ 풀이

by Ellery 2021. 9. 6.

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

 

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

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

programmers.co.kr

- 해쉬맵으로 들어온 유저, 아이디를 바꾼 유저를 계속 업데이트 해주고, 들어오고 나간 결과값 스트링 벡터를 만들어서 리턴해주면 된다. 

- stringstream은 c++로 문자열 파싱문제를 푸는 데 있어서 구세주다.. strtok 방식과 함께 익혀두면 좋다. 

#include <iostream>
#include <sstream>
#include <string>
#include <unordered_map>
#include <vector>
using namespace std;

vector<string> solution(vector<string> record) {
    vector<string> answer;
    unordered_map<string, string> umap;
    string cmd, uid, nickname;

    for (string& s : record) {
        stringstream ss(s);
        ss >> cmd >> uid >> nickname;

        if (cmd == "Enter" || cmd == "Change") {
            umap[uid] = nickname;
        }
    }

    for (string& s : record) {
        stringstream ss(s);
        ss >> cmd >> uid >> nickname;
        if (cmd == "Enter") {
            answer.push_back(umap[uid] + "님이 들어왔습니다.");
        } else if (cmd == "Leave") {
            answer.push_back(umap[uid] + "님이 나갔습니다.");
        }
    }

    return answer;
}