본문 바로가기
알고리즘/알고리즘

[C++] 프로그래머스 : 오픈채팅방

by 두둠칫 2022. 6. 1.

https://programmers.co.kr/learn/courses/30/lessons/42888

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

 

 

split 함수를 구현 + map활용하는 간단한 문제

#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <map>

using namespace std;

vector<string> split(string str, char Delimiter) {
    istringstream iss(str);
    string buffer;
 
    vector<string> result;
 
    while (getline(iss, buffer, Delimiter)) {
        result.push_back(buffer);
    }
 
    return result;
}

vector<string> solution(vector<string> record) {
    vector<string> answer;
    vector<vector<string>> vv(record.size());
    map<string, string> m;
    
    for(int i=0; i<record.size(); i++){
        vv[i] = split(record[i], ' ');
        
        if(vv[i][0]=="Enter" || vv[i][0]=="Change"){
            m[vv[i][1]] = vv[i][2];
        }
    }
    
    for(int i=0; i<vv.size(); i++){
        string act = vv[i][0];
        string msg = m[vv[i][1]];
        
        if(act == "Enter"){
            msg += "님이 들어왔습니다.";
        }
        else if(act == "Leave"){
            msg += "님이 나갔습니다.";
        }
        else{
            continue;
        }
        
        answer.push_back(msg);
    }
    
    return answer;
}