Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- priority_queue
- 브루트포스
- STL
- Sort
- 레벨2
- C++
- BFS
- 프로그래머스
- dfs
- 삼성SW테스트
- 문자열
- dp
- 2018
- 백트래킹
- 시뮬레이션
- 이런게4문제
- 삼성SW역량테스트
- 모의SW역량테스트
- swea
- 코딩테스트
- KAKAO
- 완전탐색
- 코딩스킬
- find
- substr
- 레벨3
- 삼성
- Set
- Map
Archives
- Today
- Total
-
[프로그래머스_레벨 3] 오픈채팅방(2019 KAKAO BLIND RECRUIT.) 본문
문자열과 <map>을 능숙하게 다루면 쉽게 해결할 수 있는 문제다.
먼저 answer에
id+"님이 들어왔습니다." 또는
id+"님이 나갔습니다."와 같은 형태로 저장하고, 이름 변경의 경우 (Change나 Enter에 기존 id의 다른 입력으로 입장) map의 해당 key의 value를 바꿔주는 식으로 answer을 저장했다.
참고로 map은 기존에 없는 key값에 대한 대입은 새로운 key,value 쌍의 입력을 하도록 동작하며,
기존에 있는 key값에 대해서는 value의 갱신을 수행해주는 기능이 있다. 이 덕분에 29행/35행과 같이 기존에 있건없건 동일한 코드로 동작시킬 수 있다. 간편한 기능이다.
마지막으로 answer에 uid+안내문의 형식을 다시 M[uid]+안내문의 형식으로 바꿔주면 된다.
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
|
#include <string>
#include <vector>
#include <map>
#include <sstream>
#define ENTER "님이 들어왔습니다."
#define OUT "님이 나갔습니다."
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
map<string, string> M; // id, name
for(int i=0; i<record.size(); i++){
string empty;
string order = "", id = "", name = "";
stringstream ss(record[i]);
while(ss >> empty){
if(order.compare("") == 0){
order = empty;
}
else if(id.compare("") == 0){
id = empty;
}
else{
name = empty;
}
}
if(order.compare("Enter") == 0){
answer.push_back(id+ENTER);
M[id] = name;
}
else if(order.compare("Leave") == 0){ // 나가는 것 답에만 표시
answer.push_back(id+OUT);
}
else if(order.compare("Change") == 0){ // id찾아서 해당 이름 변경
M[id] = name;
}
}
// answer에 id를 이름으로 변경시킨 뒤 반환.
for(int i=0; i<answer.size(); i++){
string cur = answer[i];
answer[i].replace(0, ID.length(), M[ID]);
}
return answer;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
'1-4. 프로그래머스' 카테고리의 다른 글
[프로그래머스_레벨2] 가장 큰 정사각형 찾기 (0) | 2020.02.15 |
---|---|
[프로그래머스_레벨2] 뉴스 클러스터링 (2018 KAKAO BLIND RECRUIT.) (0) | 2020.02.11 |
[프로그래머스_레벨 3] 여행 경로 (DFS) (0) | 2020.02.10 |
[프로그래머스_레벨 3] 2 x n 타일링 (0) | 2020.02.10 |
[프로그래머스] 레벨 3 - 네트워크 (0) | 2020.02.09 |
Comments