Make Unreal REAL.
article thumbnail
Level 2. 오픈채팅방

 

 

2019년에 카카오에서 출제한 재밌는 문제였다.

 

각 유저의 닉네임은 가장 최근에 변경한 것으로 보여야하기 때문에, 기록을 확인하면서 정답을 수정하는 것보다는 기록을 한 번에 다 확인하고 정답을 한꺼번에 작성하는 것이 좋다.

 

이름 변경 명령이면 단순히 이름을 바꾸고, 입장/퇴장 명령이면 유저 아이디와 함께 출력할 정답 배열에 추가한다.

 

#include <iostream>
#include <vector>
#include <unordered_map>
#include <sstream>
#include <utility>

using namespace std;

vector<string> solution(vector<string> record)
{
    vector<string> answer;
    vector<pair<char, string>> op_uid;
    unordered_map<string, string> uid_name;

    for (string rec : record)
    {
        string op, uid, name;
        istringstream iss(rec);

        iss >> op >> uid >> name;

        switch (op[0])
        {
        case 'E':
        {
            uid_name[uid] = name;
            op_uid.emplace_back(pair<char, string>('E', uid));

            break;
        }
        case 'L':
        {
            op_uid.emplace_back(pair<char, string>('L', uid));

            break;
        }
        case 'C':
        {
            uid_name[uid] = name;

            break;
        }
        }
    }

    for (pair<char, string>& pr : op_uid)
        answer.emplace_back(uid_name[pr.second] + "님이 " +
                            (pr.first == 'E' ? "들어왔" : "나갔") + "습니다.");

    return answer;
}

'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글

Level 2. 숫자 변환하기  (0) 2023.03.22
Level 2. 튜플  (0) 2023.03.21
Level 2. 이진 변환 반복하기  (0) 2023.03.19
Level 2. 최댓값과 최솟값  (0) 2023.03.18
Level 2. 피로도  (0) 2023.03.17
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그