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 |
Tags
- leetcode
- Algorithm
- 코딩테스트
- 제로베이스 프론트엔드 스쿨
- 멀티스레드
- 백준
- React
- 제로베이스
- 프론트엔드 스쿨
- 백트래킹
- C++
- MemoryBarrier
- JavaScript
- 프로그래머스
- 자바스크립트
- 서버
- 알고리즘
- c#
- 구현
- socket
- 구조체
- Server
- 메모리 배리어
- 코딩테스트 스터디
- N과 M(2)
- 완전탐색
- dfs
- map
- BFS
- 문자열&연산자
Archives
- Today
- Total
Written
프로그래머스 레벨2 <오픈채팅방> C++ 풀이 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42888?language=cpp
이 문제를 풀면서 stringstream에 대해서 공부 해 볼 수 있어서 좋았습니다. 기존에는 문자열을 파싱하려고 할 때, 보통 파싱의 기준이 되는 문자에서 if문 처리를 하거나, 마지막 인덱스에서 분기처리를 하는 방식으로 문제를 풀곤 했었는데 이 문제를 기존에 제가 풀던 방식대로 하면서 풀리지를 않아 인터넷에 올라와있는 풀이를 참고하면서 sstream헤더파일을 사용하는 문자열 파싱에 대해서 학습해 볼 수 있었습니다.
사실 문제 자체는 크게 어렵지 않습니다. 입력 문자열을 Enter , Leave , Change에 따라 분기처리하여 Leave인 경우를 제외하고, 유저아이디에 따라 닉네임을 map에서 계속 갱신시켜주기만 하면 답을 구하는 아이디어는 어렵지 않습니다. 다만 문자열 파싱의 과정에서 저 같은 경우에는 애를 먹었기 때문에, 만약 stringstream을 모르고 계셨다면 이 문제를 계기로 공부해보시면 좋을 것 같습니다.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#include <string>
#include <vector>
#include <sstream>
#include <map>
using namespace std;
vector<string> solution(vector<string> record) {
vector<string> result, state;
map<string,string> m;
for(int i=0;i<record.size();i++)
{
stringstream ss(record[i]);
string str[3];
string tmp;
int idx = 0;
while(ss >> tmp)
str[idx++] = tmp;
if (str[0] == "Enter")
{
state.push_back("들어왔습니다.");
result.push_back(str[1]);
m[str[1]] = str[2];
}
else if (str[0] == "Leave")
{
state.push_back("나갔습니다.");
result.push_back(str[1]);
}
else
{
m[str[1]] = str[2];
}
}
for (int i=0;i<result.size();i++)
{
result[i] = m[result[i]] + "님이 " + state[i];
}
return result;
}
|
cs |
'알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 레벨2 <n진수 게임> C++ 풀이 (1) | 2023.10.09 |
---|---|
프로그래머스 레벨2 <구명보트> C++ 풀이 (1) | 2023.10.03 |
프로그래머스 레벨2 <방문 길이> C++ 풀이 (0) | 2023.09.26 |
프로그래머스 레벨2 <타겟 넘버> C++ 풀이 (0) | 2023.09.25 |
프로그래머스 레벨2 <튜플> C++ 풀이 (0) | 2023.09.22 |
Comments