반응형
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42888
풀이
record 배열의 문자열들을 단어별로 파싱한 뒤 unordered_map을 이용하여 uid와 닉네임을 갱신해준다.
갱신이 끝나면 다시 record 배열을 돌며 Enter 또는 Leave에 따라 문자열을 생성하고 정답 배열에 넣어준다.
코드
#include <bits/stdc++.h>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
unordered_map<string, string> idInfo;
for(int i=0; i<record.size(); i++){
vector<string> tmp;
istringstream iss(record[i]);
string buf;
while(getline(iss, buf, ' ')){
tmp.push_back(buf);
}
if(tmp[0] == "Leave") continue;
else {
idInfo[tmp[1]] = tmp[2];
}
}
for(int i=0; i<record.size(); i++){
vector<string> tmp;
istringstream iss(record[i]);
string buf;
while(getline(iss, buf, ' ')){
tmp.push_back(buf);
}
string systemMessage = "";
if(tmp[0] == "Enter"){
systemMessage += idInfo[tmp[1]];
systemMessage += "님이 들어왔습니다.";
}
else if(tmp[0] == "Leave"){
systemMessage += idInfo[tmp[1]];
systemMessage += "님이 나갔습니다.";
}
else continue;
answer.push_back(systemMessage);
}
return answer;
}
반응형
'Programming Solve > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 콜라츠 추측 / Swift (0) | 2022.04.22 |
---|---|
프로그래머스 - 수식 최대화 / C++ (0) | 2022.04.22 |
프로그래머스 - 피로도 / C++ (0) | 2022.04.12 |
프로그래머스 - 행렬의 덧셈 / Swift (0) | 2022.04.01 |
프로그래머스 - K번째수 / Swift (0) | 2022.03.31 |