Dolphins의 HelloWorld
(2018)kakao blind recruitment 1차 > 오픈채팅방 본문
문제링크 : https://programmers.co.kr/learn/courses/30/lessons/42888
정답률 : 59%
풀이
이 문제를 풀기위해 내가 쓴 핵심개념은 map과 queue이다.
일단 채팅창에 남는 메세지를 순서대로 저장하기위해 queue를 사용했으며
큐에는 Enter혹은 Leave와 uid를 함께 삽입하였다.
또한 map을 통해 uid에 대한 닉네임을 최신화시켜줌으로써
큐에서 하나씩 꺼낼 때 가장 최신화된 닉네임으로 메세지를 출력하도록 하였다.
#include <iostream> #include <string> #include <vector> #include <queue> #include <map> using namespace std; vector<string> solution(vector<string> record) { vector<string> answer; queue<pair<string, string>> q; map<string, string> m; for (int i = 0; i < record.size(); i++) { string tmp; vector<string> v; for (int j = 0; j < record[i].size(); j++) { if (record[i][j] == ' ') { v.push_back(tmp); tmp.clear(); } else tmp.push_back(record[i][j]); } v.push_back(tmp); if (v[0] == "Change") { m[v[1]] = v[2]; } else if (v[0] == "Leave") q.push(make_pair(v[0], v[1])); else { q.push(make_pair(v[0], v[1])); m[v[1]] = v[2]; } } while (!q.empty()) { string x = q.front().first; string y = q.front().second; string result; q.pop(); if (x == "Enter") result = m[y] + "님이 들어왔습니다."; else result = m[y] + "님이 나갔습니다."; answer.push_back(result); } return answer; }
'Algorithm > Programmers 문제풀이' 카테고리의 다른 글
(2018)kakao blind recruitment > 무지의 먹방 라이브 (1) | 2018.09.28 |
---|---|
(2018)kakao blind recruitment 1차 > 실패율 (0) | 2018.09.27 |
Programmers > 코딩테스트 연습 > 동적계획법 > 등굣길 (0) | 2018.09.26 |
Programmers > 코딩테스트 연습 > 완전탐색 > 모의고사 (0) | 2018.09.26 |
Programmers > 코딩테스트 연습 > 정렬 > H-index (0) | 2018.09.26 |
Comments