Algorithm/Programmers
[Algorithm] Programmers :: 오픈채팅방
MaxLevel
2022. 7. 15. 23:59
https://school.programmers.co.kr/learn/courses/30/lessons/42888?language=cpp
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
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
|
vector<string> solution(vector<string> record) {
vector<string> answer;
map<string, string> idMap;
for (int i = 0; i < record.size(); i++)
{
istringstream ss(record[i]);
vector<string> words;
string word;
while (getline(ss, word, ' '))
{
words.push_back(word);
}
// words[0] == 명령어
// words[1] == ID
// words[2] == 닉네임.
if (words[0] == "Enter" || words[0] == "Change")
{
idMap[words[1]] = words[2];
}
}
for (int i = 0; i < record.size(); i++)
{
istringstream ss(record[i]);
vector<string> words;
string word;
while (getline(ss, word, ' '))
{
words.push_back(word);
}
string temp;
if (words[0] == "Enter")
{
temp = idMap[words[1]] + "님이 들어왔습니다.";
answer.push_back(temp);
}
else if (words[0] == "Leave")
{
temp = idMap[words[1]] + "님이 나갔습니다.";
answer.push_back(temp);
}
}
return answer;
}
|
cs |
카카오 2레벨짜리 문제다.
최종적으로 변경된 닉네임으로 로그를 출력하는 문제인데, 어차피 id는 고정이라서 닉네임이 변경될 수 있는 가능성을 지닌 이벤트인 채팅방 입장(Enter), 닉네임 변경(Change) 일 때, map[id] = nickname; 처럼 작성해서 최종적으로 최신닉네임을 알 수 있도록 짰다.
그 다음 다시 배열을 한번 돌면서 id값에 맞게 닉네임을 변경하고 최종출력할 스트링을 완성시키면 된다.