프로그래머스 오픈채팅방 코드 및 해설 (파이썬)

2021. 6. 1. 15:40algorithm

반응형

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

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

 

id2nickname이라는 딕셔너리를 만들어 key에는 user id가, value에는 가장 최신의 닉네임이 저장되도록 했습니다. 이후 eng2ko 함수를 통해 영어를 한국어로 바꾸고, id와 당시의 닉네임 대신 최신 닉네임이 나타나도록 했습니다.

 

def eng2ko(one_record, id2nickname):

    user_id = one_record.split()[1]
    nickname = id2nickname[user_id]

    # 채팅방 들어오기
    if one_record.startswith('Enter'):
        return nickname + '님이 들어왔습니다.'

    # 채팅방 나가기 
    elif one_record.startswith('Leave'):
        return nickname + '님이 나갔습니다.'


def solution(record):
    answer = []

    # key: user id, value: 최신 닉네임 
    id2nickname = {}
    for rec in record:
        user_id = rec.split()[1]
        if len(rec.split()) > 2:
            nickname = rec.split()[2]
            # 가장 최근의 닉네임으로 계속 갱신
            id2nickname[user_id] = nickname

    for rec in record:
        result = eng2ko(rec, id2nickname)
        if result:
            answer.append(result)

    return answer
반응형