코드
def solution(record):
answer = [] # 채팅방 기록
id_name = {} # 유저 아이디: 닉네임
for i in record:
if 'Enter' in i:
id_name[i.split()[1]] = i.split()[2]
answer.append('+' + i.split()[1])
elif 'Change' in i:
id_name[i.split()[1]] = i.split()[2]
else:
answer.append('-' + i.split()[1])
for i in range(len(answer)):
if '+' in answer[i]:
answer[i] = id_name[answer[i][1:]]+'님이 들어왔습니다.'
else:
answer[i] = id_name[answer[i][1:]]+'님이 나갔습니다.'
return answer
record에서 유저 아이디별 닉네임이 변화하는 과정을 먼저 파악한다.
닉네임은 Enter이거나 Change일 때만 변화하므로 해당 경우에 딕셔너리 id_name에 반영해 준다.
또한 answer에 추가할 때 Enter는 +를, Leave일 때는 -를 닉네임 앞에 붙여 들어왔는지, 나갔는지 표시한다.
채팅방에 들어오고 나가거나, 닉네임을 변경한 기록이 담긴 배열 answer를 조건에 맞게 변경해 주면 된다.
+가 붙여있으면 "(닉네임)님이 들어왔습니다."를, -일 때는 "(닉네임)님이 나갔습니다"로 answer를 바꿔준다.
딕셔너리만 생각했다면 쉽게 풀 수 있는 문제였다.
반응형