https://programmers.co.kr/learn/courses/30/lessons/42888
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
|
#include <string>
#include <vector>
#include <unordered_map>
#include <sstream>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
vector<pair<string, string>> chat; //id, func저장
unordered_map<string, string> people; //key : id, val : nickname 저장
for(int i=0; i<record.size(); i++){
string toki[3];//각 record 들의 function, id, nickname을 저장할 배열
string token;
stringstream ss(record[i]);//stringstream에 넣으면 공백을 기준으로 문자열을 잘라줌
int idx = 0;
while (ss >> token) {//stream에서 하나씩 빼와서 token에 넣어줌.
toki[idx++] = token;//token을 toki 배열에 저장.
}
//알아보기 쉽게 변수를 할당하여 저장
string func = toki[0];
string id = toki[1];
string nick = toki[2];
//function이 Change가 아닐 때, chat 내용에 남김.
if(func!="Change"){
chat.push_back({id, func});//여기서 id와 function을 저장하는 이유는, nickname은 나중에 바뀔 수도 있기 때문!
}
//function이 Leave가 아닐 때, 해당 id에 대응하는 nickname 을 map에 저장.
if(func!="Leave"){
people[id] = nick;
}
}
//채팅 내용 answer에 추가
for(int i=0;i<chat.size();i++){
string nick = people[chat[i].first];//id에 대응하는 nickname
string func = chat[i].second;//function
string msg = "";
//추가
if(func == "Enter") msg = nick+"님이 들어왔습니다.";
else if(func=="Leave") msg= nick +"님이 나갔습니다.";
answer.push_back(msg);
}
return answer;
}
|
cs |
왠지는 모르겠는데 string toki[3]; 부분 대신 vector<string> toki;로 하고 push_back을 사용했을 때에는 에러가 났다.....왜지..?
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 더 맵게 - C++, priority_queue로 min_heap 구성 (0) | 2021.11.11 |
---|---|
프로그래머스 카카오프렌즈 컬러링북 - C++/ DFS (0) | 2021.11.11 |
[C++] 베스트 앨범 (해시 문제) (0) | 2021.11.06 |
[프로그래머스/파이썬] 여행경로 (0) | 2021.11.02 |
[프로그래머스/python]단어 변환 (0) | 2021.11.01 |