프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이방법

record를 공백을 기준으로 3 단어로 잘라 string형 벡터 tmp에 담고 tmp[0]가 Enter, Leave, Change인지 판별한다.

맵 자료구조를 통해 유저 아이디를 Key, 닉네임을 Value로 하여 저장함으로써 Enter나 Change를 통해 유저 아이디에 따른 닉네임이 저장 및 수정될 수 있도록 하였다.

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

using namespace std;

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

'프로그래머스 > 2레벨' 카테고리의 다른 글

숫자 블럭/C++  (0) 2023.02.08
점 찍기/C++  (0) 2023.02.08
방문 길이/C++  (0) 2023.02.06
소수 찾기/c++  (0) 2023.02.03
큰 수 만들기/C++  (0) 2023.02.03

+ Recent posts