728x90
반응형
<문제 링크>
https://programmers.co.kr/learn/courses/30/lessons/42888
<풀이>
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
반응형
'~2023' 카테고리의 다른 글
[Python] 백준 1806번 문제, 부분합 (0) | 2022.05.02 |
---|---|
[Python] 멀쩡한 사각형 - Summer/Winter Coding(2019) (0) | 2022.04.21 |
[논문 리뷰] FaPN: Feature-Aligned Pyramid Network for Dense Image Prediction (0) | 2022.04.21 |
[논문 리뷰] Residual Attention Network for Image Classification (0) | 2022.04.20 |
[Python] 로또의 최고 순위와 최저 순위 - 2021 Dev-Matching: 웹 백엔드 개발자(상반기) (0) | 2022.04.18 |