티스토리 뷰

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

 

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

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

programmers.co.kr

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

using namespace std;

vector<string> split(string input, char delimiter) {
    vector<string> answer;
    stringstream ss(input);
    string temp;
    while (getline(ss, temp, delimiter)) {
        answer.push_back(temp);
    }
    return answer;
}

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

string+map 을 다루는 문제.

 

c++은 문자열을 split 하는 함수가 없어서 stringstream 으로 직접 구현해줘야 한다.

 

다른 분들의 풀이를 보니까 

이런 식으로 ss에 split할 문자열을 넣어주고, split된 문자열 조각을 미리미리 이렇게 받을 수 있었다. 이 점을 사용할 것.

stringstream ss(input);
ss>>command;
ss>>uid;
if(command=="Enter" || command=="Change")
{
  ss>>ID;
  m[uid]=ID;
}

<출처: 프로그래머스  soooong , 김종옥 , 이태형 님>

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함