๋ฌธ์ ๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/42888
์คํ ์ฑํ ๋ฐฉ์ ์ถ์ ๋ฉ์ธ์ง๋ฅผ ๋ฆฌํดํ๋ ๋ฌธ์ .
ํ์ด
์ฌ์ค ํ์ด ๊ณผ์ ์์ฒด๋ ์ด์ ํ์ด๋ดค๋ 1๋จ๊ณ ๋ฌธ์ ๋ค์ด ๋ ์ด๋ ค์ด ๊ฒ ๊ฐ๋ค.
ํ์ง๋ง ๋์์ฐ๊ธฐ๊ฐ ํฌํจ๋ ๋ฌธ์์ด์ ๋์์ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก 3๊ฐ์ ์ ๋ ฅ์ผ๋ก ๋๋ ์ผํ๋ค๋๊ฒ ์ ์ผ ๊น๋ค๋ก์ ๋ค
"Enter Uid1234 Prodo" ๋ผ๊ณ ์ ๋ ฅ์ด ๋ค์ด์ค๋ฉด
๋ช ๋ น์ด์ธ "Enter"๊ณผ ์ ์ ์ ์์ด๋์ธ "Uid1234" ๊ทธ๋ฆฌ๊ณ ๋๋ค์ "Prodo"๋ก ๋๋ ์ผํ๋ค.
์ ์ ์์ด๋๋ ์ค๋ณต๋ ์ ์์ง๋ง ๋๋ค์์ ์ค๋ณต๋ ์ ์๋ค. ๊ฐ์ Prodo๋ผ๋ ๋๋ค์์ด๋ผ๊ณ ํด๋ 2๋ช ์ ์ ์ ์ผ ์๋ ์๋ค๋ ๋ป์ด๋ค.
- ์ ๋ ฅ๋ฌธ ์ชผ๊ฐ๊ธฐ
์ฒ์์ ๋๋ ๋์์ฐ๊ธฐ๊ฐ ๋ช ๋ฒ์งธ ์ธ๋ฑ์ค์ธ์ง ์ฐพ์์ ์๋ฅด๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
pos1์ ์ฒซ ๋ฒ์งธ ๋์์ฐ๊ธฐ์ ์์น, pos2๋ ๋ ๋ฒ์งธ ๋์์ฐ๊ธฐ์ ์์น๋ผ๊ณ ํ์ ๋
0 ~ pos1์๊น์ง ์๋ฅด๊ณ pos1 + 1 ~ pos2 ์๊น์ง ์๋ฅด๊ณ pos2 + 1 ~ ๋๊น์ง ์ด๋ ๊ฒ ์ธ ๊ตฌ๊ฐ์ผ๋ก ์๋ฅด๋ ๋ฐฉ๋ฒ์ ์ผ๋ค.
์ด๋, pos1๊ณผ pos2๋ find ํจ์๋ฅผ ์ด์ฉํด์ ์ฐพ์ ์ ์๋ค.
์ ๋ต์ ๋งํ ํ์ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ํ ๋ฒ ๋ดค๋๋ sstream์ ์ด์ฉํ๋๊น ํจ์ฌ ์ฝ๊ฒ ์ ๋ ฅ์ ๋ฐ์ ์ ์์๋ค.
stringstream ss(record[i]);
string cmd, ID, Nic;
ss >> cmd;
ss >> ID;
ss >> Nic;
๊ทธ๋ฅ ์ด๋ ๊ฒ๋ง ํ๋ฉด record[i]์ ์๋ ๋ช ๋ น๋ฌธ์ ๋์์ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก 3๊ฐ๋ฅผ ๋ฐ์ ์ ์๋ค.
์์ฒญ ์ ์ฉํ ์ฝ๋์ธ ๋ฏํ๋ค.
- ์ ์ ๋ณ๋ก ๋๋ค์ ์ ์ฅ
์ ์ ๊ฐ ๋๋ค์์ ๋ณ๊ฒฝํ๋ฉด ์์ ์ด๋ฏธ ์๊ฒจ์๋ ์ถ์ ๋ฉ์ธ์ง์ ๋๋ค์๋ถ๋ถ๋ ๋ณ๊ฒฝ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ์ ๋ณ๋ก ์ต์ข ์ ์ผ๋ก ๋ฐ๋ ๋๋ค์์ ์๊ณ ์์ด์ผํ๋ค.
์ ์ ์ ์์ด๋๋ ๋ชจ๋ ๊ณ ์ ํ ์ ๋ณด์ด๊ธฐ ๋๋ฌธ์ map์ ์ด์ฉํ๋ค.
์ ์ ์ ์์ด๋๋ฅผ Key๋ก ์ ์ ์ ๋๋ค์์ Value๋ก ์๊ฐํ๋ฉด ๋๋ค.
map<string, string> User_Nickname์ด๋ผ๋ ๋งต์ ์ ์ธํ๋ค.
- ๋ฉ์ธ์ง ์ถ๋ ฅ
record ์ ๋ค์ด์๋ ๋ช ๋ น๋ฌธ๋ค ์ค์ Enter์ Leave์ธ ๊ฒฝ์ฐ์๋ง ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋ฉด ๋๋ค.
๋๋ ์ถ๋ ฅํด์ผํ ๋ฉ์ธ์ง๋ค์ ์ ๋ณด๋ฅผ ๊ฐ๋ตํ๊ฒ ํ์ ์ ์ฅํด๋๊ณ ํ ๋ฒ์ ์ถ๋ ฅํ๋ ๋ฐฉ์์ผ๋ก ํ๋ค.
queue<pair<char, string>> ์ ํด์ ์ถ๋ ฅํด์ผํ ๋ฉ์ธ์ง๊ฐ Enter์ด๋ฉด 'E'๋ฅผ, Leave์ด๋ฉด 'L'์ ํ์ด์ ์ฒซ๋ฒ์งธ์ ๋ฃ๊ณ , ํด๋น ์ ์ ์ ID๋ฅผ ํ์ด์ ๋๋ฒ์งธ์ ๋ฃ์๋ค.
๊ทธ๋ฐ๋ฐ ๊ตณ์ด ์ด๋ ๊ฒ ์ํ๊ณ record๋ฅผ ๋ค์ ๋๋ฉด์ ๋ช ๋ น์ด๊ฐ Enter ๋๋ Leave์ธ ๊ฒฝ์ฐ์๋ง answer๋ฒกํฐ์ ๋ฉ์ธ์ง๋ฅผ ์ง์ด๋ฃ์ด๋ ๋ ๊ฒ๊ฐ๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๊ตณ์ด ํ๋ฅผ ๋ง๋ค์ง ์์๋ ๋๋ค.
|
#include <string>
#include <vector>
#include <iostream>
#include <map>
#include <queue>
#include <sstream>
using namespace std;
const int MAX_N = 100000 + 5;
queue<pair<char, string>> q;
vector<string> solution(vector<string> record) {
vector<string> answer;
map<string, string> User_NickName;
for (int i = 0; i < record.size(); i++) {
stringstream ss(record[i]);
string cmd, ID, Nic;
ss >> cmd;
ss >> ID;
ss >> Nic;
if (cmd == "Enter") {
User_NickName[ID] = Nic;
q.push({ 'E',ID });
}
else if (cmd == "Change")
User_NickName[ID] = Nic;
else if (cmd == "Leave") {
q.push({ 'L',ID });
}
}
while (!q.empty()) {
char cmd = q.front().first;
string ID = q.front().second;
q.pop();
string temp = "";
temp += User_NickName[ID];
temp += "๋์ด ";
if (cmd == 'E')
temp += "๋ค์ด์์ต๋๋ค.";
else if (cmd == 'L')
temp += "๋๊ฐ์ต๋๋ค.";
answer.push_back(temp);
}
return answer;
}
|
cs |
'ํ๋ก๊ทธ๋๋จธ์ค > 2๋จ๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ํ๊ฒ ๋๋ฒ (0) | 2022.06.20 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2022.06.15 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ํ๋ฆฐํฐ (0) | 2022.06.15 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2022.06.15 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2022.06.14 |