풀이 과정
map을 활용한다면 쉽게 풀 수 있는 문제이다.
record가 문자열로 들어왔기 때문에 편리하게 사용하기 위해 reco라는 이중벡터에 넣어줬다.
map은 이미 들어온 key값이 있으면 value 예전 값이 사라지고, 업데이트 되는 식이기
때문에 Enter일때나 Chnage일 때 닉네임을 생성하거나, 업데이트 해주면 된다.
결과는 유저 아이디인 key값을 넣으면 업데이트 된 닉네임 value값이 나오게 되며
Enter, Leave일 때에 따라 다르게 문자열을 생성하면 된다.
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
vector<vector<string>> reco;
for(int i = 0; i < record.size(); i++){
vector<string> temp;
string str = "";
for(int j = 0; j < record[i].size(); j++){
if(record[i][j] == ' '){
temp.push_back(str);
str = "";
}
else str += record[i][j];
}
if(str != "") temp.push_back(str);
reco.push_back(temp);
}
map<string, string> m; // uid1234 Muzi
for(int i = 0; i < reco.size(); i++){
if(reco[i][0] == "Enter" || reco[i][0] == "Change"){
m[reco[i][1]] = reco[i][2];
}
}
for(int i = 0; i < reco.size(); i++){
string str = "";
if(reco[i][0] == "Enter"){
str += m[reco[i][1]];
str += "님이 들어왔습니다.";
}
else if(reco[i][0] == "Leave"){
str += m[reco[i][1]];
str += "님이 나갔습니다.";
}
if(str != "") answer.push_back(str);
}
return answer;
}
'🍞 Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스][Level2] 줄 서는 방법 c++ (0) | 2022.10.21 |
---|---|
[프로그래머스][Level2] 이진 변환 반복하기 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 영어 끝말잇기 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 수식 최대화 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 배달 c++ (0) | 2022.10.21 |