링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42888
문제설명
문자열이 담긴 record 배열이 있고, 각 문자열은 "입장 or 퇴장or닉네임변경, 유저 ID, 유저 닉네임" 3칸으로 이루어져있다.채팅방에 누군가 들어오면 "[닉네임]님이 들어왔습니다.", 나가면 "[닉네임]님이 나갔습니다."를 출력해준다.
닉네임 변경 방법은 다음과 같이 두가지이다.
1. 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다.
2. 채팅방에서 닉네임을 변경한다.
닉네임을 변경하면 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된다.
코드
def solution(record):
answer = []
dic = {}
for i in record:
enter = i.split()
if enter[0] == "Enter" or enter[0] == "Change":
dic[enter[1]] = enter[2]
for i in record:
enter = i.split()
if enter[0] == "Enter":
answer.append(dic[enter[1]]+"님이 들어왔습니다.")
elif enter[0] == "Leave":
answer.append(dic[enter[1]]+"님이 나갔습니다.")
return answer
아이디어
1. 닉네임 변경시 기존에 출력된 닉네임도 모두 바뀌니 결국 마지막에 유저 ID에 대응되는 닉네임만 알고 있으면 된다.
2. 방 입장과 닉네임 변경에 대한 마지막을 기록
3. 이제 record에서 하나씩 꺼내며 입장/퇴장에 따라 출력만 해주면 끝.
'알고리즘' 카테고리의 다른 글
프로그래머스 - 혼자 놀기의 달인 (0) | 2022.12.20 |
---|---|
프로그래머스 - 모두 0으로 만들기 (0) | 2022.12.19 |
프로그래머스 - 길 찾기 게임 (0) | 2022.12.15 |
백준(1644) - 소수의 연속합 (0) | 2022.12.12 |
프로그래머스 - 신고 결과 받기 (0) | 2022.12.07 |