Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코드 리뷰
- 백트래킹
- Level 2
- DP
- 프로그래머스
- 코드리뷰
- Web
- Level 4
- Gold 4
- Level 3
- 그리디
- next_permutation
- c++
- 2020 카카오 인턴십
- 월간 코드 챌린지
- DFS
- 2019 KAKAO BLIND
- level 1
- 구현
- 삼성 SW 역량 테스트
- SWEA
- Gold 5
- BFS
- 부스트코스
- 스택/큐
- pass
- 2020 KAKAO BLIND
- 브루트포스
- 백준
- 시뮬레이션
Archives
- Today
- Total
Min:D's Devlog
[프로그래머스][2019 KAKAO BLIND][C++] 오픈채팅방 본문
문제
프로그래머스 2019 KAKAO BLIND RECRUITMENT - 오픈채팅방 (Level 2)
문제 풀이
접근 방식
이 문제는 2019 카카오 블라인드 채용 1차 코딩테스트 1번 문제로,
주어진 채팅방 기록을 통해 최종적으로 보여지는 메시지를 구하는 문제였다.
이 문제는 map을 이용하면 간단하게 해결할 수 있었다.
우선, key 값에는 ID, value에는 닉네임을 저장할 map을 만들어주었다.
그 후, record 문자열을 옵션, ID, 닉네임으로 파싱한 후, 옵션에 따라 다르게 처리해주었다.
옵션이 Enter인 경우에는 map에 ID와 닉네임을 저장해주었고, id와 메시지를 저장해주었다.
옵션이 Leave인 경우에는 id와 메시지를 저장해주었고,
Change인 경우에는 map에 ID와 닉네임을 다시 저장하여 닉네임을 변경해주었다.
마지막으로 저장해 놓은 id와 메시지를 활용하여 답을 도출하였다.
풀이 코드 - C++
#include <string>
#include <vector>
#include <map>
using namespace std;
vector<string> solution(vector<string> record) {
map<string, string> dic; // ID, 닉네임
vector<string> result_id; // ID
vector<string> result_op; // 옵션
int len = record.size();
for(int i = 0 ; i < len ; i++){
// 옵션
int start= 0;
int end = record[i].find(" ", start);
string option = record[i].substr(start, end);
// ID
start = end + 1;
end = record[i].find(" ", start);
string id = record[i].substr(start, end-start);
// 닉네임
string nick = record[i].substr(end+1);
if(option == "Enter"){
dic[id] = nick;
result_id.push_back(id);
result_op.push_back("님이 들어왔습니다.");
} else if(option == "Leave"){
result_id.push_back(id);
result_op.push_back("님이 나갔습니다.");
} else {
dic[id] = nick;
}
}
int result_len = result_id.size();
vector<string> answer(result_len);
for(int i = 0; i < result_len; i++){
answer[i] = dic[result_id[i]] + result_op[i];
}
return answer;
}
실행 결과
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][2019 KAKAO BLIND][C++] 후보키 (0) | 2020.09.14 |
---|---|
[프로그래머스][2019 KAKAO BLIND][C++] 실패율 (0) | 2020.09.13 |
[프로그래머스][2020 KAKAO BLIND][C++] 괄호 변환 (0) | 2020.09.11 |
[프로그래머스][2020 KAKAO BLIND][C++] 문자열 압축 (0) | 2020.09.10 |
[프로그래머스][2020 KAKAO BLIND][C++] 블록 이동하기 (0) | 2020.09.09 |
Comments