[Python] 오픈채팅방
코딩테스트 합격자되기 파이썬 편- 문제 22
문제 > https://school.programmers.co.kr/learn/courses/30/lessons/42888
✅ 문제 접근
유저 아이디와 닉네임은 짝지어서 관리
- 중복된 닉네임을 가진 유저 아이디의 구분을 위함
✅ 기능
- record 명령에 따라 유저 아이디와 닉네임을 짝짓기
- 명령어가 Enter와 Change 인 경우에 진행
- record 명령에서 명령어와 유저 아이디에 따라 answer에 차례대로 추가
✅ 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def solution(record):
answer= []
uidName={}
for r in record:
command=r.split()
if command[0] in ['Enter', 'Change']:
uidName[command[1]]= command[2]
for r in record:
command= r.split()
uid= command[1]
if command[0] == 'Enter':
answer.append(uidName[uid] + "님이 들어왔습니다.")
elif command[0] == 'Leave':
answer.append(uidName[uid] + "님이 나갔습니다.")
return answer
✅ 회고
-
처음에 문제를 어떻게 풀어야 할까 생각할 때 바로 answer를 생성하고, record를 한 번만 돌면서 Change가 나오면 닉네임을 바꾸려고 했다. 하지만 이 방식대로 하면 중복 닉네임이 생길 경우 유저 아이디를 구분하여 바꿀 수 있는 방법은 없었고.. 아무튼 이 방법은 무리라고 생각했다.
그래서 record를 두 번 훑어서 첫 번째는 유저 아이디와 최종 닉네임을 딕셔너리의 키, 값으로 넣어두고, 두 번째는 유저 아이디의 닉네임과 명령어로 answer를 생성했다.😝
This post is licensed under CC BY 4.0 by the author.