Algorithm

[카카오 코테 2019 | python] 오픈 채팅방 ✅

삐롱K 2025. 6. 17. 15:51
728x90
반응형

 

Q1) 문제를 어떻게 이해하셨나요?
A1) 이 문제는 채팅방에서 유저의 입장, 퇴장, 닉네임 변경 기록을 바탕으로, 최종적으로 관리자가 보게 될 메시지를 출력하는 문자열 재구성 문제입니다.
Q2) 풀이 전략
A2)
- 각 유저의 user_id별로 최신 닉네임을 저장해야 해요. → "Change"와 "Enter" 명령에서 갱신됨
- 실제 메시지를 출력하는 건 "Enter", "Leave" 명령만 해당돼요. → 출력용 메시지는 이 명령만 기록하고, 닉네임은 나중에 넣음
- 따라서, 첫 번째 패스에서는 유저 ID 기준으로 닉네임 딕셔너리(map)를 만듭니다. 두 번째 패스에서는 출력 메시지를 만들되, 닉네임은 딕셔너리에서 최신 닉네임을 참조해서 출력합니다.

 

🔥 내 풀이

def solution(record):
    answer = []
    check = []
    user_map = {}
    
    # 닉네임 기록하기
    for entry in record:
        step = entry.split(" ")
        if step[0] == "Enter": # 입장
            user_map[step[1]] = step[2]
            check.append([step[1], 1])
        elif step[0] == "Leave": # 퇴장
            check.append([step[1], 0])
        else:
            user_map[step[1]] = step[2]
            
    # 메시지 만들기
    for uid, action in check:
        if action == 1:
            answer.append(user_map[uid] + "님이 들어왔습니다.")
        else:
            answer.append(user_map[uid] + "님이 나갔습니다.")
    return answer

 

728x90
반응형