프로그래머스의 오픈 채팅방(Lv2) 문제이다.


[ 문제풀이 ]

가장 먼저, 본인은 map을 이용해서 < ID, 닉네임 > 을 쌍으로 관리해 주었다. 즉, map<string , string> 으로 선언해서 ID와 닉네임을 관리하였다.

"Enter"라는 명령어가 실행되었을 때, 1차적으로 입장한 ID 에 따른 닉네임을 저장해 주었고,

"Change"라는 명령어가 실행되었을 때, ID에 저장되어 있는 닉네임을 저장해 주었다.


주어진 명령어들에서, ' '를 기준으로 어떤 명령어인지, 그리고 ID과 닉네임을 관리만 잘 하면, 실질적인 관리는 map으로 하면 되는 문제였다..


[ 소스코드 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <string>
#include <vector>
#include <map>
 
using namespace std;
 
vector<string> solution(vector<string> record) 
{
    map<stringstring> User;
    for (int i = 0; i < record.size(); i++)
    {
        int Idx = 0;
        string Cmd = "";
        for (Idx; record[i][Idx] != ' '; Idx++) Cmd += record[i][Idx];
        Idx++;
 
        if (Cmd == "Enter")
        {
            string ID = "";
            string Name = "";
            for (Idx; record[i][Idx] != ' '; Idx++) ID += record[i][Idx];
            Idx++;
            for (Idx; Idx < record[i].length(); Idx++) Name += record[i][Idx];
            User[ID] = Name;
        }
        else if (Cmd == "Change")
        {
            string ID = "";
            string Name = ""
            for (Idx; record[i][Idx] != ' '; Idx++) ID += record[i][Idx];
            Idx++;
            for (Idx; Idx < record[i].length(); Idx++) Name += record[i][Idx];
            User[ID] = Name;
        }
    }
    vector<string> answer;
    for(int i = 0 ;i < record.size(); i++)
    {
        int Idx = 0;
        string Cmd = "";
        for (Idx; record[i][Idx] != ' '; Idx++) Cmd += record[i][Idx];
        Idx++;
 
        if (Cmd == "Enter")
        {
            string ID = "";
            for (Idx; record[i][Idx] != ' '; Idx++) ID += record[i][Idx];
            string Result = User[ID];
            Result += "님이 들어왔습니다.";
            answer.push_back(Result);
        }
        else if (Cmd == "Leave")
        {
            string ID = "";
            for (Idx; Idx < record[i].length(); Idx++) ID += record[i][Idx];
            string Result = User[ID];
            Result += "님이 나갔습니다.";
            answer.push_back(Result);
        }
    }
    return answer;
}
 
cs


+ Recent posts