Muzi의 닉네임이 Prodo로 바뀌며 관리자창의 로그도 변한 것을 볼 수 있다.
- 딕셔너리에 유저 아이디를 key, 닉네임을 value로 하여 값을 저장한다. (ex. {'uid1234': 'Prodo'})
- 유저 아이디로 로그를 만든다. (ex. "uid1234님이 들어왔습니다")
- 마지막에 유저 아이디를 닉네임으로 치환한다.
(ex. "uid1234님이 들어왔습니다" → "Prodo님이 들어왔습니다")
from collections import defaultdict # KeyError 방지를 위해 자주 사용
def solution(records):
answer = []
d = defaultdict(str)
for record in records:
arr = record.split(' ')
action = arr[0]
# 1. Enter - 딕셔너리에 닉네임 정보를 저장하고, 로그에도 추가
if action == 'Enter':
uid, nickname = arr[1], arr[2]
# uid → 닉네임 치환을 편하게 하기 위해 리스트 형태로 추가
answer.append([uid, '님이 들어왔습니다.'])
d[uid] = nickname
# 2. Leave - 로그에 추가
elif action == 'Leave':
uid = arr[1]
answer.append([uid, '님이 나갔습니다.'])
# 3. Change - 딕셔너리에서 닉네임 정보 수정
else: # action == 'Change'
uid, nickname = arr[1], arr[2]
d[uid] = nickname
for i in range(len(answer)):
answer[i] = d[answer[i][0]] + answer[i][1]
return answer
첫 번째 for문을 돈 후 d와 answer은 아래와 같다.
for i in range(len(answer)):
answer[i] = d[answer[i][0]] + answer[i][1]
를 통해 uid를 닉네임으로 치환하고, 리스트였던 answer[i]를 string으로 바꾸어준다.