[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - μ˜€ν”ˆμ±„νŒ…λ°©C++)

2023. 8. 25. 11:29Β·πŸ–₯️ Study Note/Coding Test

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

문제 μ„€λͺ…

μΉ΄μΉ΄μ˜€ν†‘ μ˜€ν”ˆμ±„νŒ…λ°©μ—μ„œλŠ” μΉœκ΅¬κ°€ μ•„λ‹Œ μ‚¬λžŒλ“€κ³Ό λŒ€ν™”λ₯Ό ν•  수 μžˆλŠ”λ°, 본래 λ‹‰λ„€μž„μ΄ μ•„λ‹Œ κ°€μƒμ˜ λ‹‰λ„€μž„μ„ μ‚¬μš©ν•˜μ—¬ μ±„νŒ…λ°©μ— λ“€μ–΄κ°ˆ 수 μžˆλ‹€.

μ‹ μž…μ‚¬μ›μΈ κΉ€ν¬λ£¨λŠ” μΉ΄μΉ΄μ˜€ν†‘ μ˜€ν”ˆ μ±„νŒ…λ°©μ„ κ°œμ„€ν•œ μ‚¬λžŒμ„ μœ„ν•΄, λ‹€μ–‘ν•œ μ‚¬λžŒλ“€μ΄ λ“€μ–΄μ˜€κ³ , λ‚˜κ°€λŠ” 것을 μ§€μΌœλ³Ό 수 μžˆλŠ” κ΄€λ¦¬μžμ°½μ„ λ§Œλ“€κΈ°λ‘œ ν–ˆλ‹€. μ±„νŒ…λ°©μ— λˆ„κ΅°κ°€ λ“€μ–΄μ˜€λ©΄ λ‹€μŒ λ©”μ‹œμ§€κ°€ 좜λ ₯λœλ‹€.

"[λ‹‰λ„€μž„]λ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."

μ±„νŒ…λ°©μ—μ„œ λˆ„κ΅°κ°€ λ‚˜κ°€λ©΄ λ‹€μŒ λ©”μ‹œμ§€κ°€ 좜λ ₯λœλ‹€.

"[λ‹‰λ„€μž„]λ‹˜μ΄ λ‚˜κ°”μŠ΅λ‹ˆλ‹€."

μ±„νŒ…λ°©μ—μ„œ λ‹‰λ„€μž„μ„ λ³€κ²½ν•˜λŠ” 방법은 λ‹€μŒκ³Ό 같이 두 가지이닀.

  • μ±„νŒ…λ°©μ„ λ‚˜κ°„ ν›„, μƒˆλ‘œμš΄ λ‹‰λ„€μž„μœΌλ‘œ λ‹€μ‹œ λ“€μ–΄κ°„λ‹€.
  • μ±„νŒ…λ°©μ—μ„œ λ‹‰λ„€μž„μ„ λ³€κ²½ν•œλ‹€.

λ‹‰λ„€μž„μ„ λ³€κ²½ν•  λ•ŒλŠ” 기쑴에 μ±„νŒ…λ°©μ— 좜λ ₯λ˜μ–΄ 있던 λ©”μ‹œμ§€μ˜ λ‹‰λ„€μž„λ„ μ „λΆ€ λ³€κ²½λœλ‹€.

예λ₯Ό λ“€μ–΄, μ±„νŒ…λ°©μ— "Muzi"와 "Prodo"λΌλŠ” λ‹‰λ„€μž„μ„ μ‚¬μš©ν•˜λŠ” μ‚¬λžŒμ΄ μˆœμ„œλŒ€λ‘œ λ“€μ–΄μ˜€λ©΄ μ±„νŒ…λ°©μ—λŠ” λ‹€μŒκ³Ό 같이 λ©”μ‹œμ§€κ°€ 좜λ ₯λœλ‹€.

"Muziλ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."

"Prodoλ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."

μ±„νŒ…λ°©μ— 있던 μ‚¬λžŒμ΄ λ‚˜κ°€λ©΄ μ±„νŒ…λ°©μ—λŠ” λ‹€μŒκ³Ό 같이 λ©”μ‹œμ§€κ°€ λ‚¨λŠ”λ‹€.

"Muziλ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."

"Prodoλ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."

"Muziλ‹˜μ΄ λ‚˜κ°”μŠ΅λ‹ˆλ‹€."

Muziκ°€ λ‚˜κ°„ν›„ λ‹€μ‹œ λ“€μ–΄μ˜¬ λ•Œ, Prodo λΌλŠ” λ‹‰λ„€μž„μœΌλ‘œ λ“€μ–΄μ˜¬ 경우 기쑴에 μ±„νŒ…λ°©μ— λ‚¨μ•„μžˆλ˜ Muzi도 Prodo둜 λ‹€μŒκ³Ό 같이 λ³€κ²½λœλ‹€.

"Prodoλ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."

"Prodoλ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."

"Prodoλ‹˜μ΄ λ‚˜κ°”μŠ΅λ‹ˆλ‹€."

"Prodoλ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."

μ±„νŒ…λ°©μ€ 쀑볡 λ‹‰λ„€μž„μ„ ν—ˆμš©ν•˜κΈ° λ•Œλ¬Έμ—, ν˜„μž¬ μ±„νŒ…λ°©μ—λŠ” ProdoλΌλŠ” λ‹‰λ„€μž„μ„ μ‚¬μš©ν•˜λŠ” μ‚¬λžŒμ΄ 두 λͺ…이 μžˆλ‹€. 이제, μ±„νŒ…λ°©μ— 두 번째둜 λ“€μ–΄μ™”λ˜ Prodoκ°€ Ryan으둜 λ‹‰λ„€μž„μ„ λ³€κ²½ν•˜λ©΄ μ±„νŒ…λ°© λ©”μ‹œμ§€λŠ” λ‹€μŒκ³Ό 같이 λ³€κ²½λœλ‹€.

"Prodoλ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."

"Ryanλ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."

"Prodoλ‹˜μ΄ λ‚˜κ°”μŠ΅λ‹ˆλ‹€."

"Prodoλ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."

μ±„νŒ…λ°©μ— λ“€μ–΄μ˜€κ³  λ‚˜κ°€κ±°λ‚˜, λ‹‰λ„€μž„μ„ λ³€κ²½ν•œ 기둝이 λ‹΄κΈ΄ λ¬Έμžμ—΄ λ°°μ—΄ recordκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, λͺ¨λ“  기둝이 처리된 ν›„, μ΅œμ’…μ μœΌλ‘œ 방을 κ°œμ„€ν•œ μ‚¬λžŒμ΄ 보게 λ˜λŠ” λ©”μ‹œμ§€λ₯Ό λ¬Έμžμ—΄ λ°°μ—΄ ν˜•νƒœλ‘œ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•˜λΌ.

λ‚΄ 풀이

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

using namespace std;

vector<string> solution(vector<string> record) {
    vector<string> answer;
    vector<pair<string, string>> messages;
    unordered_map<string, vector<int>> user_message_idx;
    unordered_map<string, string> user_names;

    for (const auto& r : record)
    {
        stringstream ss(r);

        string command;
        string user_id;
        string user_name;

        ss >> command >> user_id >> user_name;

        if (command == "Enter")
        {
            if(user_names[user_id] != user_name)
            {
                for (auto i : user_message_idx[user_id])
                {
                    messages[i].first = user_name;
                }
            }
            user_names[user_id] = user_name;
            messages.emplace_back(make_pair(user_name, "λ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."));
            user_message_idx[user_id].emplace_back(messages.size() - 1);
        }
        else if (command == "Leave")
        {
            messages.emplace_back(make_pair(user_names[user_id], "λ‹˜μ΄ λ‚˜κ°”μŠ΅λ‹ˆλ‹€."));
            user_message_idx[user_id].emplace_back(messages.size() - 1);
        }
        else if (command == "Change")
        {
            user_names[user_id] = user_name;
            for (auto i : user_message_idx[user_id])
            {
                messages[i].first = user_name;
            }
        }

    }

    for (const auto r : messages)
    {
        answer.emplace_back(r.first + r.second);
    }

    return answer;
}
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'πŸ–₯️ Study Note > Coding Test' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.3 - ν•©μŠΉ νƒμ‹œ μš”κΈˆ (C++)  (0) 2023.09.05
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 이λͺ¨ν‹°μ½˜ 할인 행사(C++)  (1) 2023.08.28
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.3 - ν‘œν˜„ κ°€λŠ₯ν•œ μ΄μ§„νŠΈλ¦¬(C++)  (0) 2023.08.22
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.1 - 크레인 μΈν˜•λ½‘κΈ° κ²Œμž„(C++)  (2) 2023.08.10
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 2xn 타일링(C++)  (0) 2023.08.08
'πŸ–₯️ Study Note/Coding Test' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.3 - ν•©μŠΉ νƒμ‹œ μš”κΈˆ (C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - 이λͺ¨ν‹°μ½˜ 할인 행사(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.3 - ν‘œν˜„ κ°€λŠ₯ν•œ μ΄μ§„νŠΈλ¦¬(C++)
  • [ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.1 - 크레인 μΈν˜•λ½‘κΈ° κ²Œμž„(C++)
Beankong_
Beankong_
μ£Όλ‹ˆμ–΄ ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž˜λ¨Έ 곡뢀 기둝
  • Beankong_
    Beankong's Devlog
    Beankong_
  • 전체
    였늘
    μ–΄μ œ
    • 전체 κΈ€ (141)
      • β›… Daily (0)
      • πŸ–₯️ Study Note (135)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • 🧭 Devlog (6)
        • μ˜€λ‹΅λ…ΈνŠΈ (2)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.3
Beankong_
[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€]level.2 - μ˜€ν”ˆμ±„νŒ…λ°©C++)
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”