오늘의 알고리즘
[C++]2019 KAKAO BLIND RECRUITMENT 오픈채팅방(프로그래머스 2레벨)
하늘하늘 .
2022. 1. 24. 15:30
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
vector<string> solution(vector<string> record)
{
vector<string> answer;
map<string, string> nickname;
int firstSpace = 0;
int secondSpace = 0;
string id = {};
string nick = {};
string enter = "님이 들어왔습니다.";
string leave = "님이 나갔습니다.";
for (int i = 0; i < record.size(); ++i)
{
// space 위치 찾기
firstSpace = record[i].find(" ");
secondSpace = record[i].find(" ", firstSpace + 1);
// space 위치를 이용해서 아이디와 닉네임 위치 찾기
id = string(record[i], firstSpace + 1, secondSpace - firstSpace - 1);
nick = string(record[i], secondSpace + 1);
if (record[i][0] == 'E')
{
if (!nickname.count(id))
nickname.insert({ id, nick });
else
nickname[id] = nick;
answer.push_back(id + enter);
}
else if (record[i][0] == 'L')
{
answer.push_back(id + leave);
}
else if (record[i][0] == 'C')
{
nickname[id] = nick;
}
}
int find = 0;
string changename = {};
for (int i = 0; i < answer.size(); ++i)
{
// 님을 이용해서 찾기
find = answer[i].find("님");
changename = string(answer[i], 0, find);
nick = nickname[changename];
answer[i].replace(0, find, nick);
}
return answer;
}
이전 것들 총집합? 이런 느낌!
시간이 생각보다 덜 걸렸네! 점점 줄어가는 기분?