https://programmers.co.kr/learn/courses/30/lessons/42888
오픈채팅방 문제는 dictionary를 잘 사용할 수 있는지 물어보는 문제인것같다.
def solution(record):
user = {}
answer = []
for i in record:
k = i.split(' ')
if k[0] == 'Enter':
user[k[1]] = k[2]
answer.append([k[1],'님이 들어왔습니다.'])
elif k[0] == 'Leave':
answer.append([k[1],'님이 나갔습니다.'])
elif k[0] == 'Change':
user[k[1]] = k[2]
answer = [user[i[0]] + i[1] for i in answer]
return answer
스페이스에 따라 record를 나눠주면
0번째엔 Enter
1번째엔 uid1234
2번째엔 Muzi
로 나뉘게 된다.
그래서 이 나뉜 값 중 첫번째에 따라 분기를 해줬다.
Enter일 경우에는 새로운 계정이 들어왔으므로
user라는 딕셔너리에 아이디를 key값으로, value는 닉네임값으로 저장해주었다.
❗️dictionary
{'키' : '값'}
위와 같이 정의되며 키는 유일하고 변하지 않는 값이다.
원래 순서가 없었지만 3.7버전부터는 순서가 생겼다.
그 다음 answer에 [userid+ '님이 들어왔습니다.']를 저장한다.
왜 userid를 저장했냐면 나중에 Change로 닉네임이 바뀔수 있기 때문이다.
Leave일 경우에는
answer에 [userid+ '님이 나갔습니다.']를 저장해준다.
여기서 user값은 건들지않는다.
"Muzi가 나간후 다시 들어올 때, Prodo 라는 닉네임으로 들어올 경우 기존에 채팅방에 남아있던 Muzi도 Prodo로 다음과 같이 변경된다."
이 조건때문에 변경해주지 않았다.
Change일 경우엔
user 값만 변경시켜주고 변경메세지를 띄우지 않으므로 answer는 건드리지 않는다.
마지막으로 ['user1234님이 들어왔습니다', .... ]로 저장되어 있는 answer값을 닉네임으로 변환시켜준다