무민은귀여워

[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 오픈채팅방 본문

IT/알고리즘

[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 오픈채팅방

moomini 2022. 5. 23. 15:23
반응형

1. 문제

2. 풀이

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/42888

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

2. 풀이

1. 처음 record를 읽으며, 유저 아이디 : 닉네임 map 을 만든다. enter, change의 경우 이름 변경하여 저장.

2. 다시 recored를 읽으며 result 문장 작성

#include <iostream>
#include <vector>
#include <sstream>
#include <map>

using namespace std;

vector<string> solution(vector<string> record) {
	vector<string> answer;
	map<string, string> nameMap;

	for (auto rec : record)
	{
		string sort = "", id = "", name = "";
		stringstream iss(rec);
		for (int i = 0; i < 3; i++)
		{
			if (i == 0)
				iss >> sort;
			if (i == 1) // id
				iss >> id;
			if (i == 2) // name
				iss >> name;
		}
		
		nameMap.insert(make_pair(id, name));

		if (sort.compare("Change") == 0 || sort.compare("Enter") == 0)
		{
			nameMap.find(id)->second = name;
		}
	}

	for (auto rec : record)
	{
		string sort = "", id = "", name = "";
		stringstream iss(rec);
		for (int i = 0; i < 3; i++)
		{
			if (i == 0)
				iss >> sort;
			if (i == 1) // id
				iss >> id;
			if (i == 2) // name
				iss >> name;
		}

		string str = "";
		if (sort.compare("Enter") == 0)
		{
			str += nameMap.find(id)->second;
			str += "님이 들어왔습니다.";
			answer.push_back(str);
		}
		else if (sort.compare("Leave") == 0)
		{
			str += nameMap.find(id)->second;
			str += "님이 나갔습니다.";
			answer.push_back(str);
		}
	}

	return answer;
}
반응형
Comments