programming

프로그래밍 퀴즈 2019 KAKAO BLIND RECRUITMENT 오픈채팅방 파이썬 풀이 해설


by Kitle · 2020. 07. 26.



출처 프로그래머스 : https://programmers.co.kr/learn/courses/30/lessons/42888

소스 github 에서 보기 : 이동

퀴즈 요약 : 채팅방에 들어왔다 나가는 경우 표시와 같은 아이디를 가진 사용자가 닉네임을 변경하는 경우 기존 히스토리도 같이 업데이트 시키는 퀴즈

solution : 

1) 아이디, 닉네임 쌍은 고유 하므로 python 딕셔너리 구조를 활용해 key value 로 구성한다.

2) 채팅방에 들어오는 경우는 아이디, 닉네임을 딕셔너리에 추가한다.

3) 채팅방에 이름을 변경하는 경우는 아이디(키)를 찾아 닉네임을 업데이트 한다.

4) 모든 히스토리를 돌아 최종 으로 아이디, 닉네임을 업데이트 하면 마지막의 아이디, 닉네임이 남게 된다.

5) 해당 딕셔너리를 기반으로 다시 히스토리를 돌며 마지막 닉네임으로 히스토리를 새로 만들어 주면 끝.


풀이

def solution(record):
answer = []
dict = {}
for item in record:
now_record = item.split(" ")
if now_record[0] == 'Enter' or now_record[0] == 'Change':
dict[now_record[1]] = now_record[2]

for now in record:
new_record = now.split(" ")
if new_record[0] == 'Enter':
answer.append(str(dict[new_record[1]])+"님이 들어왔습니다.")
if new_record[0] == 'Leave':
answer.append(str(dict[new_record[1]])+"님이 나갔습니다.")
return answer


record = ["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]
solution(record)