Algorithm

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

삐롱K 2025. 6. 17. 15:51

 

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

 

[추천 강의]

https://inf.run/7TU84

 

38군데 합격 비법, 2025 코딩테스트 필수 알고리즘| 딩코딩코 - 인프런 강의

현재 평점 5.0점 수강생 2,019명인 강의를 만나보세요. 초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요! 알고리즘,

www.inflearn.com

 

https://inf.run/jzapB

 

6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법| 딩코딩코 - 인

현재 평점 5.0점 수강생 457명인 강의를 만나보세요. 모든 이력서가 비슷해 보이는 세상, ‘차별화’가 합격을 만듭니다. 6주간, 백엔드 실무자가 직접 전하는 실전 이력서 전략 4가지를 배우세요.

www.inflearn.com

 

728x90
반응형