문제
- 관리자가 보게 될 메세지를 문자열 배열 형태로 리턴하기
- 채팅방에 누군가 들어오거나 나갈 때 메세지가 출력된다.
- 닉네임을 변경하면 기존 채팅방에 출력되어 있던 메세지의 닉네임도 전부 변경된다.
- 1 <= record <= 100,000
풀이 (20mins)
- 중복 닉네임을 허용하므로 유저 아이디별 닉네임 관리가 필요하다.
- 들어오고 나갈 때마다 (유저 아이디, "님이 들어왔습니다.") 형식으로 저장하고, 유저 아이디를 닉네임으로 변경하기
테스트 26 〉통과 (167.30ms, 41.9MB)
from collections import defaultdict
def solution(records):
logs = []
nick_name = defaultdict(str)
m = ["님이 나갔습니다.", "님이 들어왔습니다."]
for record in records :
cmd = record.split()
# 닉네임 변경
if cmd[0] == 'Change' :
nick_name[cmd[1]] = cmd[2]
# 들어오기 / 나가기
else:
x = 1 if cmd[0] == 'Enter' else 0
if x : nick_name[cmd[1]] = cmd[2] # 들어오는 경우 닉네임 추가
logs.append((cmd[1], m[x]))
# 관리자가 보게 될 전체 메세지 로그 완성하기
for i in range(len(logs)) :
uid, message = logs[i]
logs[i] = nick_name[uid]+message
return logs