반응형
https://programmers.co.kr/learn/courses/30/lessons/42888
본 문제는 '2019 KAKAO BLIND RECRUITMENT'로 kakao Tech에 의하면 "정답률 59.91%." 라고 한다. 이번 코딩 테스트는 5시간 동안 7문제를 해결해야 했고, 효율성 확인을 통해 추가 점수를 부여하는 문제도 있었다. 전체적으로 1, 2, 4번 문제를 많이 풀었고, 3번 문제는 16.09%, 5번 7.40%, 6번 6.12%, 7번 5.85%로 정답률이 낮았다. 전반적으로 2018년 문제보다 많이 어려웠다. 1차 코딩 테스트 합격 컷트라인이 몇 점인지 참 궁금하다.
map과 vector를 이용하면 쉽게 풀리는 문제다. 중복된 닉네임이 가능하고, 닉네임 변경을 채팅방 안과 밖에서 가능하다. 따라서, 다음과 같은 절차가 필요하다.
- map을 이용해 최종 닉네임을 확인한다.
- vector를 이용해 입장과 퇴장에 대한 순서를 저장하여 return한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
map<string, string> m;
vector<pair<string, string>> v;
for (int i = 0; i < record.size(); i++) {
int index = 0;
string act = "";
string uid = "";
string nic = "";
// 명령문 확인
while (index != record[i].size()) {
if (record[i][index] == ' ') {
index += 1;
break;
}
else act += record[i][index];
index += 1;
}
// uid 저장
while (index != record[i].size()) {
if (record[i][index] == ' ') {
index += 1;
break;
}
else uid += record[i][index];
index += 1;
}
while (index != record[i].size()) {
nic += record[i][index];
index += 1;
}
// 닉네임 확인
v.push_back(make_pair(uid, act));
if (act.compare("Leave") == 0) continue;
else if (act.compare("Enter") == 0) {
// 새로운 uid일 경우
if (m.find(uid) == m.end()) m.insert(make_pair(uid, nic));
// 닉네임을 채팅방 밖에서 변경한 경우
else {
m.erase(uid);
m.insert(make_pair(uid, nic));
}
}
// 닉네임을 채팅방에서 변경한 경우
else if (act.compare("Change") == 0) {
m.erase(uid);
m.insert(make_pair(uid, nic));
}
}
for (int i = 0; i < v.size(); i++) {
string tmp = "";
tmp += m.find(v[i].first)->second;
tmp += "님이 ";
if (v[i].second.compare("Enter") == 0) {
tmp += "들어왔습니다.";
}
else if (v[i].second.compare("Leave") == 0) {
tmp += "나갔습니다.";
}
else if (v[i].second.compare("Change") == 0) continue;
answer.push_back(tmp);
}
return answer;
}
|
cs |
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 힙(Heap) - 더 맵게, C++ (0) | 2020.01.06 |
---|---|
[프로그래머스] 연습문제 - 문자열 내 마음대로 정렬하기, C++ (0) | 2020.01.06 |
[프로그래머스] 연습문제 - 124 나라의 숫자, C++ (0) | 2020.01.06 |
[프로그래머스]서머코딩/윈터코딩(~2018) - 소수 만들기, C++ (0) | 2020.01.06 |
[프로그래머스] 2017 카카오코드 예선 - 카카오프렌즈 컬러링북, C++ (0) | 2020.01.04 |
댓글