[프로그래머스 C++] 오픈채팅방
[프로그래머스 C++] 오픈채팅방
https://school.programmers.co.kr/learn/courses/30/lessons/42888
해결전략
문자열
map
sstream, stringstream -->> 사용하려면 #include<sstream> 을 선언해야 한다.
코드
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <sstream>
using namespace std;
map<string, string> idNname; // ID와 닉네임을 등록하는 map
vector<pair<string, string>> index; // 입장과 퇴장을 기록하는 배열
vector<string> solution(vector<string> record) {
vector<string> answer;
for(int i=0; i<record.size(); i++)
{
stringstream ss(record[i]);
string command, id, name;
ss >> command >> id >> name; // 빈칸 기준으로 자른 문자열을 각각 기록
if(command == "Enter")
{
if(id != "") // 이전에 들어갔다 나간 후 다시 들어온 경우
idNname[id] = name;
else // 처음 들어온 경우
idNname.insert({id, name });
index.push_back({ command, id });
}
else if (command == "Leave")
{
index.push_back({ command, id });
}
else if (command == "Change")
{
idNname[id] = name;
}
}
for (int i =0; i<index.size(); i++)
{
// index[].first에 기록한 command를 사용하여 어떤 문구가 나올지 결정한다.
// index[].second에 기록한 id를 사용하여 idNname의 닉네임을 찾아서 사용한다.
if (index[i].first == "Enter"){
answer.push_back(idNname[index[i].second] + "님이 들어왔습니다.");
}
else if (index[i].first == "Leave"){
answer.push_back(idNname[index[i].second] + "님이 나갔습니다.");
}
}
return answer;
}
int main()
{
vector<string> testcase1 = { "Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan" };
solution(testcase1);
return 0;
}
'⭐ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 C++] 롤 케이크 자르기 (0) | 2023.10.25 |
---|---|
[프로그래머스 C++] [3차] 파일명 정렬 (0) | 2023.10.24 |
[프로그래머스 C++] 전력망을 둘로 나누기 (0) | 2023.10.19 |
[프로그래머스 C++] 더 맵게 (0) | 2023.10.18 |
[프로그래머스 C++] 섬 연결하기 (0) | 2023.10.18 |
댓글
이 글 공유하기
다른 글
-
[프로그래머스 C++] 롤 케이크 자르기
[프로그래머스 C++] 롤 케이크 자르기
2023.10.25 -
[프로그래머스 C++] [3차] 파일명 정렬
[프로그래머스 C++] [3차] 파일명 정렬
2023.10.24 -
[프로그래머스 C++] 전력망을 둘로 나누기
[프로그래머스 C++] 전력망을 둘로 나누기
2023.10.19 -
[프로그래머스 C++] 더 맵게
[프로그래머스 C++] 더 맵게
2023.10.18