알고리즘/프로그래머스

프로그래머스 - 오픈채팅방

시나모온 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

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~