[프로그래머스] 오픈채팅방

klean·2021년 5월 25일
0

문제 요약(의역)

유저들이 들어오고 나갈 때마다 메시지를 작성한다.
그런데 이름을 변경해도 마지막에 붙었던 이름으로 기존의 메시지도 바뀐다.

오픈 채팅방에서 유저는 고유한 아이디를 갖는다.
같은 아이디 즉, 같은 유저일지라도 이름이 다양하게 붙을 수 있으며, 아래 2가지 방법으로 이름이 바뀔 수 있다.

  1. 채팅방을 나갔다 다시 들어오면서 새로운 이름을 달고 옴
  2. 채팅방 안에서 이름 변경

입력

멤버 입장, 퇴장, 이름 변경 내역이 명령어 형식으로 주어진다.

출력

이름 변경이 온전히 적용된 입장 퇴장 로그를 만들어낸다.

아이디어

python의 split이 이런 종류의 명령어를 토큰화하는 데에 정말 도움이 된다..
map(python의 dict)으로 이름 변경 내역을 저장한다. 키는 유저아이디 value는 현재 붙어있는 이름이다.
유저아이디 기반으로 로그를 작성해두고 작성이 완료되면 유저아이디를 최종적인 이름으로 바꿔주었다.

새로 배운 것

python dict의 경우 삽입, 값 변경 다 똑같이 간단하게
m[키] = 발유
로 할 수 있었다. 변경을 할 때 c++처럼 멤버십 테스트를 먼저 할 필요도 없다.

소스코드

def solution(record):
    answer = []
    m = {}
    for rec in record:
        rec = rec.split()
        if rec[0] == "Enter":
            m[rec[1]] = rec[2]
            answer.append([rec[1],'님이 들어왔습니다.'])
        elif rec[0] == "Leave":
            answer.append([rec[1],"님이 나갔습니다."])
        elif rec[0] == "Change":
            m[rec[1]] = rec[2]
    
    for i in range(len(answer)):
        stat = answer[i]
        stat[0] = m[stat[0]]
        answer[i] = "".join(stat)

    
    return answer
    

0개의 댓글