문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42888
풀이
회원의 uid와 회원의 닉네임을 항상 매핑하고 있는 딕셔너리를 관리하면서, 닉네임 변경이나 채팅방을 들어오고 나가는 내역을 로그로 쌓아놓고, 이를 닉네임과 매칭하여 출력하면 되는 간단한 문제이다.
def solution(records):
logs = [] # 닉네임 변경이나 채팅방을 들어오고 나가는 내역을 저장할 배열
members = {} # {회원id: 닉네임}을 저장할 딕셔너리
for record in records:
record = record.split()
if record[0] == "Enter": # 입장 관련 기록이면
members[record[1]] = record[2] # 새로운 회원이 입장하였으므로 딕셔너리에 회원 아이디와 닉네임을 저장
logs.append([record[0], record[1]]) # 입장 로그 기록
elif record[0] == "Leave": # 퇴장 관련 기록이면
logs.append([record[0], record[1]]) # 퇴장 로그 기록
else: # 닉네임 변경 관련 기록이면
members[record[1]] = record[2] # 회원의 새로운 닉네임을 딕셔너리에 저장
answer = []
for log in logs: # 저장된 로그를 순회하며
if log[0] == "Enter": # 카톡방 입장 로그라면
answer.append(f"{members[log[1]]}님이 들어왔습니다.") # 딕셔너리에 저장한 아이디에 매핑된 회원의 닉네임을 사용
else: # 카톡방 퇴장 로그라면
answer.append(f"{members[log[1]]}님이 나갔습니다.")
return answer
'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스 Lv.2] 피보나치 수 (Python) (0) | 2024.07.07 |
---|---|
[프로그래머스 Lv.3] 베스트앨범 (Python) (0) | 2024.07.07 |
[프로그래머스 Lv.3] 징검다리 건너기 (Python) (0) | 2024.07.03 |
[프로그래머스 Lv.4] N으로 표현 (Python) (0) | 2024.07.02 |
[프로그래머스 Lv.2] 순위 검색 (Python) (0) | 2024.06.15 |