프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이방법
record를 공백을 기준으로 3 단어로 잘라 string형 벡터 tmp에 담고 tmp[0]가 Enter, Leave, Change인지 판별한다.
맵 자료구조를 통해 유저 아이디를 Key, 닉네임을 Value로 하여 저장함으로써 Enter나 Change를 통해 유저 아이디에 따른 닉네임이 저장 및 수정될 수 있도록 하였다.
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer, userId;
map<string, string> m;
for(int i = 0; i < record.size(); i++) {
vector<string> tmp;
string stmp = "";
for(int j = 0; j < record[i].length(); j++) {
if(record[i][j] == ' ') {
tmp.push_back(stmp);
stmp = "";
}
else stmp += record[i][j];
}
tmp.push_back(stmp);
if(tmp[0] == "Enter") {
answer.push_back("님이 들어왔습니다.");
userId.push_back(tmp[1]);
m[tmp[1]] = tmp[2];
}
else if(tmp[0] == "Leave") {
answer.push_back("님이 나갔습니다.");
userId.push_back(tmp[1]);
}
else m[tmp[1]] = tmp[2];
}
for(int i = 0; i < answer.size(); i++) {
answer[i] = m[userId[i]] + answer[i];
}
return answer;
}