[프로그래머스] 오픈채팅방

업데이트:

카카오 기출 오픈채팅방 문제 풀이입니다.

오픈채팅방

문제 설명

문제가 엄청 길지만 이 사진으로 이 문제는 설명이 가능하다.

간단하게 말하면 맵으로 유저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;
}

소스코드

이 외에도 제가 푼 문제들 소스코드는 다음 링크에 있습니다!!! 알고리즘 문제풀이

댓글남기기