알고리즘/프로그래머스
프로그래머스 - 오픈채팅방
시나모온
2020. 9. 9. 07:51
문제 링크입니다 : programmers.co.kr/learn/courses/30/lessons/42888
코딩테스트 연습 - 오픈채팅방
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오
programmers.co.kr
문자열 + map 문제였다.
c++로 문자열 처리하는 게 낯서다면 어려울 수도 있다.
하지만 조금 연습하면 그렇게 어렵지도 않다.
#include <string>
#include <vector>
#include <iostream>
#include <map>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> answer;
// uid_name
map<string, string> uid_name;
for(int i = 0; i < record.size(); i++) {
string str = record[i];
vector<string> cmd;
int index = 0;
while(true) {
int findIdx = str.find(' ', index);
if(findIdx == string::npos) {
cmd.push_back(str.substr(index));
break;
} else {
cmd.push_back(str.substr(index, findIdx - index));
index = findIdx + 1;
}
}
string& behavior = cmd[0];
string& uid = cmd[1];
string& name = cmd[2];
if(behavior == "Enter" || behavior == "Change") {
uid_name[uid] = name;
}
}
for(int i = 0; i < record.size(); i++) {
string str = record[i];
vector<string> cmd;
int index = 0;
while(true) {
int findIdx = str.find(' ', index);
if(findIdx == string::npos) {
cmd.push_back(str.substr(index));
break;
} else {
cmd.push_back(str.substr(index, findIdx - index));
index = findIdx + 1;
}
}
string& behavior = cmd[0];
string& uid = cmd[1];
string& name = cmd[2];
if(behavior == "Enter") {
answer.push_back(uid_name[uid] + "님이 들어왔습니다.");
} else if(behavior == "Leave") {
answer.push_back(uid_name[uid] + "님이 나갔습니다.");
}
}
return answer;
}
개발 환경 : vscode
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~