문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42888
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
회원의 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 |