코테 준비용 공부 - 오픈채팅방

jihunnit·2022년 9월 4일
0

코테

목록 보기
6/20

오픈채팅방

문자열을 다루는 문제이다.
LV2 !! 문제 !! 지만 사실 문자열이라는 주제에 한정해서는
LV이라는게 그렇게 중요한가..? 싶기도 하다.

아무래도 역시나 문제를 풀면서 느끼는 것은
아 진짜 python 갈아타야 하나..하는 것이다.

'python 이면은 split() 쓰면 이거 다 나눠지고 편하게 저장해서 바로 문자열 이케 뽑아서 할 수 있는거 아냐??'

하는 생각이 계속 머리를 맴돈다..
일단은 그래도 꾸역꾸역 C++로 문제를 푸는 나, 제법 의리가 있다.

각설하고 문제에 대해 얘기하자면, 그냥 위에 나온 그대로다
잘 나눠서 저장하고 잘 뽑아서 쓰자.

uid는 고정값임을 이용해서
map 자료구조를 이용해 uid 값을 계속 덮어쓰기했다.

그것 외에는 딱히..

#include <string>
#include <vector>
#include <map>
using namespace std;
map<string, string> m;
vector<string> act;
vector<string> uid;
void func(string);
vector<string> solution(vector<string> record) {
    vector<string> answer;
    for(int i=0;i<record.size();i++){
        func(record[i]);
    }
    for(int i=0;i<act.size();i++){
        string s;
        if(act[i]=="Enter"){
            s = m[uid[i]]+"님이 들어왔습니다.";
        }
        if(act[i]=="Leave"){
            s = m[uid[i]]+"님이 나갔습니다.";
        }
       if(s!="") answer.push_back(s);
    }
    
    return answer;
}
void func(string s){
	vector<int> v;
	int k=0;
    while(s.find(' ',k)!=string::npos){
        k=s.find(' ',k);
        v.push_back(k);
        k++;
    }
    string act1 = s.substr(0,v[0]);
    act.push_back(act1);
    string uid1;
    if(act1=="Leave"){
    	uid1 = s.substr(v[0]+1);
   		uid.push_back(uid1);
	}
    else {
		uid1 = s.substr(v[0]+1,v[1]-v[0]-1);
	    uid.push_back(uid1);
	}
    if(act1!="Leave"){
    	string name = s.substr(v[1]+1);
    	m[uid1]=name;
	}

    v.clear();
}
profile
인간은 노력하는 한 방황한다

0개의 댓글