본문 바로가기
코딩테스트

[파이썬] 오픈채팅방 - 2019 KAKAO BLIND RECRUITMENT [CODING TEST #15]

by ALTERww 2022. 7. 24.
320x100

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

 

 

채팅 로그를 저장하는 리스트 chat와 가장 최신화된 uid - 닉네임을 저장하는 딕셔너리 nickname을 이용했다.

chat[0]에는 들어오거나 나가는 로그를 저장하고, chat[1]은 uid를 저장한다. 그리고 Enter, Change일 때 딕셔너리에서 uid에 해당하는 닉네임을 최신화하면 된다.

 

from collections import defaultdict
def solution(record):
    # 어떤 uid가 들어왔는지 / 나갔는지를 기록하고, 최종 uid의 닉네임이 뭔지만 잘 알면 된다.
    answer = []
    chat = []
    nickname = defaultdict()
    for rec in record:
        data = rec.split()
        if data[0] == 'Enter':
            chat.append(['들어왔습니다',data[1]]) # 0 : Enter
            nickname[data[1]] = data[2] # data[1] = uid(key), data[2] = nickname(val)
        elif data[0] == 'Leave':
            chat.append(['나갔습니다',data[1]]) # 1 : Leave
        else : # Change
            nickname[data[1]] = data[2]                 
    for i in range(len(chat)):
        answer.append("{nick}님이 {state}.".format(nick = nickname[chat[i][1]], state = chat[i][0]))
    return answer

 

댓글