[プランナー]オープンチャットルーム


オープンチャットルーム


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;
    }
    
    Pythonコード
    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