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;
}
'<algorithm> > 프로그래머스' 카테고리의 다른 글
프로그래머스 연속 부분 수열 합의 개수 c++ (0) | 2023.05.29 |
---|---|
프로그래머스 귤 고르기 c++ (0) | 2023.05.29 |
프로그래머스 최고의 집합 c++ (0) | 2023.05.28 |
프로그래머스 멀리 뛰기 c++ (0) | 2023.05.28 |
프로그래머스 N개의 최소공배수 c++ (0) | 2023.05.28 |