-
[프로그래머스] 오픈채팅방문제 풀이 2020. 6. 3. 23:18
풀이)
unordered_map을 사용해서 푼 문제이다.
unordered_map <string,string> name; // 유저아이디를 key로, 유저닉네임을 value로 생각했다.
그래서 명령문을 {유저아이디, 명령문종류} 로 저장해둔 다음 유저아이디에 해당하는 닉네임으로 출력해줬다.
코드)
#include <string> #include <vector> #include <unordered_map> using namespace std; vector<string> solution(vector<string> record) { vector<string> answer; unordered_map <string,string> name; //key :userid, value:nickname vector <pair<string,string>> result;
for(int i=0;i<record.size();i++){ string s[3] ={"","",""};//명령어, 유저아이디, 닉네임 -> 공백기준으로 나눔 int idx =0; for(int j=0;j<record[i].length();j++){ if(record[i][j] == ' '){ idx++; continue; } s[idx] += record[i][j]; } if(s[0] == "Enter"){ result.push_back({s[1],s[0]}); //userid, 명령어 enter 삽입 name[s[1]] = s[2];//유저 닉네임 저장 } else if(s[0] == "Leave"){ result.push_back({s[1],s[0]}); //userid, 명령어 leave 삽입 } else{//Change name[s[1]] = s[2]; //유저 닉네임 변경 } } for(int i=0;i<result.size();i++){ string user = name[result[i].first]; //유저 아이디에 해당하는 닉네임 가져옴 if(result[i].second == "Enter"){ answer.push_back(user + "님이 들어왔습니다."); } else{ answer.push_back(user + "님이 나갔습니다."); } } return answer; }
'문제 풀이' 카테고리의 다른 글
[프로그래머스] 파일명정렬 (0) 2020.06.04 [프로그래머스] 방금그곡 (0) 2020.06.04 [프로그래머스] 캐시 (0) 2020.06.03 [프로그래머스] 뉴스클러스터링 (0) 2020.06.02 [프로그래머스] 점프와 순간이동 (0) 2020.06.02