~2023
[Python] 오픈채팅방 - 2019 KAKAO BLIND RECRUITMENT
범범범즈
2022. 4. 21. 22:15
728x90
반응형
<문제 링크>
https://programmers.co.kr/learn/courses/30/lessons/42888
코딩테스트 연습 - 오픈채팅방
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오
programmers.co.kr
<풀이>
record에 Enter, Leave, Change가 수행된 문자열이 담겨져 있어 해당 문자열에 따라 출력해야 하는 문구를 result로 내보낸다.
Change를 수행 할 경우 해당 id에 따른 전에 기록에서 닉네임이 바뀌어야 하기 때문에 문구를 바로 출력하면 문제가 있다. 그래서 배열에서 연산을 전부 수행한 다음에 result를 내보내면 된다.
def solution(record):
answer = []
id_list = dict()
for s in record:
s = s.split()
if s[0] == "Enter":
id_list[s[1]] = s[2]
answer.append(f"{s[1]}님이 들어왔습니다.")
elif s[0] == "Leave":
answer.append(f"{s[1]}님이 나갔습니다.")
else:
id_list[s[1]] = s[2]
for i in range(len(answer)):
id = answer[i].split("님")[0]
answer[i] = answer[i].replace(id, id_list[id])
return answer
id로 닉네임을 찾아야하기 때문에 딕셔너리 형태의 id_list를 정의하고 유저 아이디와 유저 닉네임을 매핑한다.
그 다음에 answer에다가 해당 명령어에 따른 문구를 저장하는데 여기서 닉네임이 아닌 유저 id를 저장한다.
모든 문구가 담겼을 때 마지막 for문에서 유저 id를 id_list에 해당하는 유저 닉네임과 매핑해줘 요구하는 정답 요건에 맞춘다.
728x90
반응형