728x90
반응형
- 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42888
- level2
- 2019 KAKAO BLIND RECRUITMENT
Q1) 문제를 어떻게 이해하셨나요?
A1) 이 문제는 채팅방에서 유저의 입장, 퇴장, 닉네임 변경 기록을 바탕으로, 최종적으로 관리자가 보게 될 메시지를 출력하는 문자열 재구성 문제입니다.
Q2) 풀이 전략
A2)
- 각 유저의 user_id별로 최신 닉네임을 저장해야 해요. → "Change"와 "Enter" 명령에서 갱신됨
- 실제 메시지를 출력하는 건 "Enter", "Leave" 명령만 해당돼요. → 출력용 메시지는 이 명령만 기록하고, 닉네임은 나중에 넣음
- 따라서, 첫 번째 패스에서는 유저 ID 기준으로 닉네임 딕셔너리(map)를 만듭니다. 두 번째 패스에서는 출력 메시지를 만들되, 닉네임은 딕셔너리에서 최신 닉네임을 참조해서 출력합니다.
🔥 내 풀이
def solution(record):
answer = []
check = []
user_map = {}
# 닉네임 기록하기
for entry in record:
step = entry.split(" ")
if step[0] == "Enter": # 입장
user_map[step[1]] = step[2]
check.append([step[1], 1])
elif step[0] == "Leave": # 퇴장
check.append([step[1], 0])
else:
user_map[step[1]] = step[2]
# 메시지 만들기
for uid, action in check:
if action == 1:
answer.append(user_map[uid] + "님이 들어왔습니다.")
else:
answer.append(user_map[uid] + "님이 나갔습니다.")
return answer
728x90
반응형
'Algorithm' 카테고리의 다른 글
[카카오 코테 2023 | python] 개인정보 수집 유효기간 (0) | 2025.06.18 |
---|---|
[카카오 코테 2022 | python] 양궁대회 (0) | 2025.06.17 |
[카카오 코테 2022 | python] k진수에서 소수 개수 구하기 (0) | 2025.06.17 |
[카카오 코테 2021 | python] 거리두기 확인하기 (0) | 2025.06.17 |
[카카오 코테 2018 | python] 캐시 (1) | 2025.06.17 |