728x90
https://programmers.co.kr/learn/courses/30/lessons/42888
c++로 sstream을 다뤄본 좋은 문제
문자열에대해 좀 나가보자
파이썬은 딕셔너리가 c++의 맵 처럼 갱신기능이 있다는걸알게됨
C++
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
|
#include <string>
#include <vector>
#include <sstream>
#include <unordered_map>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
stringstream ss;
unordered_map <string, string> id_name;
string e_l; string id; string name;
vector<string> uid;
for (int i = 0; i < record.size(); i++) {
ss.str(record[i]);
ss >> e_l;
if (e_l == "Enter") {
ss >> id;
ss >> name;
answer.push_back("님이 들어왔습니다.");
id_name[id] = { name };
uid.push_back(id);
}
else if (e_l == "Leave") {
ss >> id;
ss >> name;
answer.push_back("님이 나갔습니다.");
uid.push_back(id);
}
else {
ss >> id;
ss >> name;
id_name[id] = { name };
}
ss.clear();
}
for (int i = 0; i < answer.size(); i++) {
answer[i] = id_name[uid[i]] + answer[i];
}
return answer;
}
|
cs |
파이썬코드
c++에 있는 맵 대신 딕셔너리를 사용함
딕셔너리는 키가 중복되더라도 뒤에것을 쓰기때문에 갱신 기능이있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
def solution(record):
answer = []
uid = []
dic = {}
for i in record:
if i.split(" ")[0] == "Enter":
answer.append("님이 들어왔습니다.")
dic[i.split(' ')[1]] = i.split(' ')[2]
uid.append(i.split(' ')[1])
elif i.split(' ')[0] == 'Leave':
answer.append("님이 나갔습니다.")
uid.append(i.split(' ')[1])
else:
dic[i.split(' ')[1]] = i.split(' ')[2]
for i in range(len(answer)):
answer[i]=dic[uid[i]]+answer[i]
return answer
|
cs |
728x90
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV 2] 메뉴 리뉴얼 파이썬 (0) | 2021.05.19 |
---|---|
[프로그래머스 LV 2] [1차] 뉴스 클러스터링 C++/파이썬 (0) | 2021.05.19 |
[프로그래머스 LV 1] 음양 더하기 파이썬/python (0) | 2021.05.18 |
[프로그래머스 LV 2] 게임 맵 최단거리 C++ (0) | 2021.05.18 |
[프로그래머스 LV 2] 짝지어 제거하기 C++ (0) | 2021.05.18 |