[프로그래머스] 오픈채팅방
업데이트:
카카오 기출 오픈채팅방 문제 풀이입니다.
문제가 엄청 길지만 이 사진으로 이 문제는 설명이 가능하다.
간단하게 말하면 맵으로 유저id와 닉네임을 관리하되 닉네임이 수정될 경우를 어떻게 처리할지만 결정하면 되는 문제이다.
나는 진짜 말그대로 그냥 id랑 닉네임만 해시를 사용하여 풀었다. 어렵지 않은 문제였다.
#include <vector>
#include <string>
#include <map>
#include <sstream>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
map<string, string> User;
vector<pair<string, string>> Result; // command id
for (string rec : record) { // id user 매핑
vector<string> spl;
stringstream ss(rec);
string tmp;
while (getline(ss, tmp, ' ')) {
spl.push_back(tmp);
}
if (spl.size() == 3) { // 유저가 들어오거나 닉네임을 변경할 경우
User[spl[1]] = spl[2]; // 유저 아이디와 닉네임 매핑
Result.push_back({ spl[0],spl[1] });
}
else {
Result.push_back({ spl[0],spl[1] });
}
}
for (auto result : Result) {
string command = result.first;
string name = User[result.second];
if (command == "Enter") { // change일 경우는 앞에서 이미 닉네임 변경되고 끝이라서 그 뒤로 따로 변경할 건 없다.
answer.push_back(name + "님이 들어왔습니다.");
}
else if (command == "Leave") {
answer.push_back(name + "님이 나갔습니다.");
}
}
return answer;
}
소스코드
이 외에도 제가 푼 문제들 소스코드는 다음 링크에 있습니다!!! 알고리즘 문제풀이
댓글남기기