문제 링크

개요

  • 딕셔너리를 사용해 해결할 수 있는 문제다.

문제 조건

  • 채팅방 상태 메시지에 대해 닉네임 변경 사항을 적용하여
    최종적으로 UI 상에서 보여지는 메시지를 목록을 반환하는 문제다.

문제 해설

  • uid에 대한 닉네임이 짝지어진 딕셔너리(name_dict)를 기반으로 최종적인 닉네임 목록을 기록한다.
  • 메시지가 Enter와 Change로 시작하는 경우 닉네임이 설정 또는 변경된 것이라 인지하여 딕셔너리를 수정한다.
  • name_dict에서 uid에 대한 닉네임을 참조하여 상태 메시지를 조건에 맞는 형식으로 변환한다.

해설 코드

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def solution(record):
    answer = []

    record = [rec.split() for rec in record]
    name_dict = {rec[1]:rec[2] for rec in record if rec[0] in {'Enter','Change'}}
    msg_dict = {'Enter':'들어왔습니다.','Leave':'나갔습니다.'}

    for rec in record:
        if rec[0] in {'Enter','Leave'}:
            answer.append(name_dict[rec[1]]+'님이 '+msg_dict[rec[0]])

    return answer