반응형
https://programmers.co.kr/learn/courses/30/lessons/42888
글쓴이의 답
개인적인 풀이 임으로
이것보다 더 좋은 알고리즘은 많음...
이렇게도 풀이하는구나.. 공유하기 위해 올림...
#include <string>
#include <vector>
#include <iostream>
#include <sstream>
#include <map>
using namespace std;
vector<string> split(string plane, char target){
string temp;
istringstream saveString(plane);
vector<string> result;
while(getline(saveString, temp, target)){
result.push_back(temp);
}
return result;
}
int makeKeyValue(vector<string> temp, map<string, string> &uid_name_match){
if ("Enter" == temp[0] || "Change" == temp[0]){
uid_name_match[temp[1]] = temp[2];
}
return 0;
}
int changeString(vector<string> temp, vector<string> &id_Save, vector<string> &inOut_Save){
if ("Enter" == temp[0]){
inOut_Save.push_back("님이 들어왔습니다.");
id_Save.push_back(temp[1]);
}
else if("Leave" == temp[0]){
inOut_Save.push_back("님이 나갔습니다.");
id_Save.push_back(temp[1]);
}
return 0;
}
vector<string> solution(vector<string> record) {
vector<string> answer;
vector<string> id_Save;
vector<string> inOut_Save;
map<string, string> uid_name_match;
for(int i=0; i < record.size(); i++){
string temp = record[i];
vector<string> splitResult = split(temp, ' ');
makeKeyValue(splitResult, uid_name_match);
changeString(splitResult, id_Save, inOut_Save);
}
for(int i=0; i < inOut_Save.size(); i++){
answer.push_back(uid_name_match[id_Save[i]] + inOut_Save[i]);
}
return answer;
}
꾸준히 하다보면 실력이 늘겠지..
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스][C++] 단체사진 찍기 (0) | 2022.03.20 |
---|---|
[프로그래머스][C++] 카카오프렌즈 컬러링북 (0) | 2022.03.20 |
[프로그래머스][C++] 문자열 압축 (0) | 2022.03.20 |
[프로그래머스][C++] 직사각형 별찍기 (0) | 2022.03.20 |
[프로그래머스][C++] x만큼 간격이 있는 n개의 숫자 (0) | 2022.03.20 |