그럴듯한 개발 블로그
반응형

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

 

프로그래머스

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

programmers.co.kr

역시 카카오문제는 색다르다 꿀잼

split 매번 구현하는거 너무 빡치는데 하나 만들어야겠다.

 

uid에 맞는 닉네임을 먼저 저장 해 두고 다시 반복문 돌면서 answer 에 넣어줬다.

#include <string>
#include <vector>
#include <unordered_map>
#include <iostream>

using namespace std;

vector<string>  ft_split(string s) // 공백을 구분자로 잘라준다
{
    vector<string>  res;
    
    int space_idx1 = 0, space_idx2 = 0;
    
    for (int i = 0; i < s.size(); i++)
    {
        if (s[i] == ' ')
        {
            if (space_idx1 == 0)
                space_idx1 = i;
            else
                space_idx2 = i;
        }
    }
    res.push_back(s.substr(0, space_idx1));
    if (space_idx2 == 0)
        res.push_back(s.substr(space_idx1 + 1, s.size() - space_idx1));
    else
    {
        res.push_back(s.substr(space_idx1 + 1, space_idx2 - space_idx1 - 1));
        res.push_back(s.substr(space_idx2 + 1, s.size() - space_idx2));
    }
    return res;
}

vector<string> solution(vector<string> record) {
    vector<string> answer;
    unordered_map<string, string>   db;
    
    for (int i = 0; i < record.size(); i++)
    {
        vector<string>  split = ft_split(record[i]); // split[0] : 상호작용, 1:uid, 2: 닉네임
               
        if (split[0] == "Enter") // uid에 해당하는 닉네임 넣어줌
            db[split[1]] = split[2];
        else if (split[0] == "Change") // 바꿔줌
            db[split[1]] = split[2];
    }
    
    for (int i = 0; i < record.size(); i++)
    {
        vector<string>  split = ft_split(record[i]); // split[0] : 상호작용, 1:uid, 2: 닉네임
               
        if (split[0] == "Enter")
            answer.push_back(db[split[1]] + "님이 들어왔습니다.");
        else if (split[0] == "Leave")
            answer.push_back(db[split[1]] + "님이 나갔습니다.");
    }
    return answer;
}
반응형
profile

그럴듯한 개발 블로그

@donghyk2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!