알고리즘 문제
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 1번 문제 오픈채팅방
feelcoding
2020. 2. 8. 22:39
728x90
코딩테스트 연습 - 오픈채팅방 | 프로그래머스
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. [닉네임]님이 들어왔습니다. 채팅방에서 누군가 나가면 다음 메시지가 출력된다. [닉네임]님이 나갔습니다. 채팅
www.welcomekakao.com
2019 카카오 신입 공채 1차 코딩 테스트 문제 해설
작년에 이어 올해도 블라인드 전형으로 카카오 개발 신입 공채가 시작되었습니다! 그 첫 번째 관문으로 1차 온라인 코딩 테스트가 지난 9월 15일(토) 오후 2시부터 7시까지 5시간 동안 치러졌는데요. 지원자분들 만큼이나 준비위원들도 테스트가 문제없이, 공정하게 치러질 수 있도록 많은 준비를 했고 두근 거리는 마음으로 끝까지 온라인 테스트를 모니터링했답니다. 문제는 작년과 비슷하게 구현 문제 위주로 쉬운 난이도에서 어려운 […]
tech.kakao.com
#include <string>
#include <vector>
#include <tuple>
#include <map>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
map<string, int> m;
vector<string> ids;
vector<string> nicknames;
vector<pair<int, string>> ment;
for (int i = 0; i < record.size(); i++) {
if (record[i][0] == 'E') {
int j = 6;
while (record[i][j] != ' ') {
j++;
}
string id = record[i].substr(6, j - 6);
string nickname = record[i].substr(j + 1);
//answer.push_back(nickname + "님이 들어왔습니다.");
if (m.find(id) != m.end()) {
nicknames[m[id]] = nickname;
}
else {
ids.push_back(id);
nicknames.push_back(nickname);
m[id] = ids.size() - 1;
}
ment.push_back(make_pair(m[id], "님이 들어왔습니다."));
}
else if (record[i][0] == 'L') {
string id = record[i].substr(6);
ment.push_back(make_pair(m[id], "님이 나갔습니다."));
}
else if (record[i][0] == 'C') {
int j = 7;
while (record[i][j] != ' ') {
j++;
}
string id = record[i].substr(7, j - 7);
string nickname = record[i].substr(j + 1);
nicknames[m[id]] = nickname;
}
}
for (pair<int, string> t : ment) {
string temp = nicknames[t.first] + t.second;
answer.push_back(temp);
}
return answer;
}
728x90