오픈채팅방

jiholee·2021년 11월 24일
0

알고리즘

목록 보기
3/20

오픈채팅방

istringstream

  • 공백을 기준으로 문자열 파싱할 때
#include <string>
#include <vector>
#include <sstream>
#include <iostream>
#include <map>

using namespace std;
map<string, string> m;

vector<string> solution(vector<string> records) {
    vector<string> answer;
    vector<string> tmp;
    
    for(string record: records)
    {
        istringstream iss(record);
        string first, uid, nick;
        
        iss >> first >> uid;      // ⭐️
        if(first != "Leave")
            iss >> nick;
        if(first == "Enter")
        {
            m[uid] = nick;
            tmp.push_back(uid +" "+"님이 들어왔습니다.");
        }
        else if(first == "Leave")
        {
            tmp.push_back(uid+" "+ "님이 나갔습니다.");
        }
        else if (first == "Change")
        {
            m[uid] = nick;
        }
    }
    for(int i = 0; i < tmp.size(); i++)
    {
        istringstream iss(tmp[i]);
        string uid, rest1, rest2 ;
        iss >> uid >> rest1 >> rest2;
  
        answer.push_back(m[uid] + rest1 + " " +rest2);
    }
    return answer;
}

파이썬 코드
d = dict()  # 최종 갱신된 uid: 이름

def solution(records):
    answer = []
    for record in records:
        if record[0] == 'E':
            action, uid, name = record.split(" ")
            d[uid] = name
        elif record[0] == 'C':
            action, uid, name = record.split(" ")
            d[uid] =  name
            
    for record in records:
        if record[0] == 'E':
            action, uid, name = record.split(" ")
            answer.append(d[uid] + "님이 들어왔습니다.")
        elif record[0] == 'L':
            action, uid = record.split(" ")
            answer.append(d[uid] + "님이 나갔습니다.")

    return answer

0개의 댓글