Life Engineering
[프로그래머스] 오픈채팅방 (C++) 본문
https://programmers.co.kr/learn/courses/30/lessons/42888
#include <string>
#include <vector>
#include <sstream>
#include <map>
using namespace std;
vector<string> split(string input, char delimiter) {
vector<string> answer;
stringstream ss(input);
string temp;
while (getline(ss, temp, delimiter)) {
answer.push_back(temp);
}
return answer;
}
vector<string> solution(vector<string> record) {
vector<string> answer;
map<string, string> m;
for (int i=0; i<record.size(); i++){
vector<string> v=split(record[i],' ');
if (v[0]=="Enter" || v[0]=="Change"){
m[v[1]]=v[2];
}
}
for (int i=0; i<record.size(); i++){
vector<string> v=split(record[i],' ');
if (v[0]=="Enter"){
answer.push_back(m[v[1]]+"님이 들어왔습니다.");
}
else if (v[0]=="Leave"){
answer.push_back(m[v[1]]+"님이 나갔습니다.");
}
}
return answer;
}
string+map 을 다루는 문제.
c++은 문자열을 split 하는 함수가 없어서 stringstream 으로 직접 구현해줘야 한다.
다른 분들의 풀이를 보니까
이런 식으로 ss에 split할 문자열을 넣어주고, split된 문자열 조각을 미리미리 이렇게 받을 수 있었다. 이 점을 사용할 것.
stringstream ss(input);
ss>>command;
ss>>uid;
if(command=="Enter" || command=="Change")
{
ss>>ID;
m[uid]=ID;
}
<출처: 프로그래머스 soooong , 김종옥 , 이태형 님>
'Problem Solving' 카테고리의 다른 글
[프로그래머스] 위클리 챌린지 (5주차) (0) | 2021.09.01 |
---|---|
[프로그래머스] 추석 트래픽 (C++) (0) | 2021.08.31 |
[프로그래머스] 문자열 압축 (C++) (0) | 2021.08.30 |
[BOJ 17427] 다리 만들기 (C++) (0) | 2021.08.26 |
[BOJ 7578] 공장 (C++) (0) | 2021.08.20 |