카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다.
신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다.
"[닉네임]님이 들어왔습니다."
채팅방에서 누군가 나가면 다음 메시지가 출력된다.
"[닉네임]님이 나갔습니다."
채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다.
채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다.
채팅방에서 닉네임을 변경한다.
닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된다.
https://programmers.co.kr/learn/courses/30/lessons/42888
def solution(record):
user = {}
answer = []
for i in record:
arg = i.split()
if arg[0] == 'Enter':
user[arg[1]] = arg[2]
elif arg[0] == 'Change':
user[arg[1]] = arg[2]
for i in record:
arg = i.split()
if arg[0] == 'Enter':
answer.append(user[arg[1]] + "님이 들어왔습니다.")
elif arg[0] == 'Leave':
answer.append(user[arg[1]] + "님이 나갔습니다.")
return answer
뒤에서 어떤 일이 벌어지는지 모르니, 한 번 배열을 순회해야한다 생각하면 편해진다. 역방향으로 순회하면 편해질 것 같지만, 결국 끝까지 어떤 명령어가 있는지 봐야한다. 따라서 정방향으로 한 번 순회하고 user_id 의 닉네임을 정한 뒤, 출력만 신경써서 해주면 된다.
구조들은 다들 비슷했다. 코드 줄 수를 조금 더 간결하게 할 수 있는 방법들이 보이긴 했지만. 코딩 테스트가 아니라면 if문을 조금 더 신경써서 줄이는 방법을 생각해 볼 만한 것 같다.