https://school.programmers.co.kr/learn/courses/30/lessons/42888
SOLUTION
def solution(record):
answer = []
rDict = {}
for r in record:
rList = r.split(" ")
if rList[0] == 'Enter':
rDict[rList[1]] = rList[2]
elif rList[0] == 'Change':
rDict[rList[1]] = rList[2]
else:
pass
# print(rList)
for r in record:
rList = r.split(" ")
if rList[0] == 'Enter':
# print(rDict[rList[1]])
answer.append(rDict[rList[1]]+"님이 들어왔습니다.")
elif rList[0] == 'Leave':
answer.append(rDict[rList[1]]+"님이 나갔습니다.")
# print(rDict)
return answer
이 문제는 카카오톡 오픈 채팅방에서 유저들의 입장, 퇴장, 닉네임 변경 기록이 주어지고, 이를 처리하여 최종적으로 방을 개설한 사람이 볼 수 있는 메시지를 출력하는 문제입니다.
문제에서는 채팅방에 유저가 입장하면 "[닉네임]님이 들어왔습니다." 메시지가 출력되고, 퇴장하면 "[닉네임]님이 나갔습니다." 메시지가 출력된다고 설명되어 있습니다. 닉네임 변경은 채팅방 메시지의 닉네임을 전부 변경한다고 합니다.
문제를 해결하기 위해서는 주어진 기록을 순차적으로 처리하면서 채팅방에 유저들이 입장하고 퇴장한 기록을 관리해야 합니다. 또한, 닉네임 변경이 발생하면 이전에 출력된 메시지의 닉네임도 변경해야 합니다.
입력으로 주어진 기록을 한 줄씩 처리하면서 유저들의 상태를 관리하고, 최종적으로 출력할 메시지를 생성하는 방식으로 문제를 해결할 수 있습니다. 이를 위해 적절한 자료구조를 사용하여 유저들과 관련 정보를 저장하고 업데이트해야 합니다.
카카오 문제이길래 겁부터 났지만 딕셔너리만 제대로 활용할 줄 안다면 손쉽게 풀리는 문제였습니다. 아마 리스트로 풀었더라면 효율성테스트에서 큰 손해를보고 헤멨을 가능성이 높았지만, 이전 코딩테스트 문제에서 딕셔너리에 대한 이해를 바탕으로 깔고 가니 10분 이내로 어렵지 않게 풀 수 있었습니다.
딕셔너리 = 짱!
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[heap 정렬에 관하여] 코딩테스트 연습 힙(Heap) 더 맵게 (0) | 2023.07.11 |
---|---|
코딩테스트 연습 2018 KAKAO BLIND RECRUITMENT [3차] n진수 게임 (0) | 2023.07.10 |
코딩테스트 연습 2018 KAKAO BLIND RECRUITMENT [3차] 압축 (0) | 2023.07.10 |
코딩테스트 연습 해시 전화번호 목록 (0) | 2023.07.09 |
코딩테스트 연습2018 KAKAO BLIND RECRUITMENT[1차] 뉴스 클러스터링 (0) | 2023.07.08 |