https://school.programmers.co.kr/learn/courses/30/lessons/42888
- 첫 번째 풀이(실패)
from collections import defaultdict
def solution(record):
answer = []
user_dict = defaultdict(list)
for i in record:
a = i.split()
if a[0]=='Enter':
if a[1] not in user_dict:
user_dict[a[1]].append([a[2],'님이 들어왔습니다.'])
else:
for t in user_dict[a[1]]:
t[0] = a[2]
elif a[0]=='Leave':
user_dict[a[1]].append([user_dict[a[1]][0], '님이 나갔습니다.'])
elif a[0] == 'Change':
for t in user_dict[a[1]]:
t[0] = a[2]
print(user_dict)
return answer
아이디와 이름을 딕셔너리로 저장하여서 바로 풀려고 했지만 들어오고 나가는 순서에 대한 정보가 사라져버림.
그래서 리스트도 같이 이용하여 풀기로 했음
- 두 번째 풀이(성공)
from collections import defaultdict
def solution(record):
answer = []
name_dict = {}
record_split = [i.split() for i in record]
# user_id의 최종 이름 저장 딕셔너리
for i in record_split:
if i[0] == 'Enter':
name_dict[i[1]] = i[2]
elif i[0] == 'Leave':
pass
elif i[0] == 'Change':
name_dict[i[1]] = i[2]
# 메세지 저장
for i in record_split:
if i[0] == 'Enter':
answer.append(name_dict[i[1]]+'님이 들어왔습니다.')
elif i[0] == 'Leave':
answer.append(name_dict[i[1]]+'님이 나갔습니다.')
elif i[0] == 'Change':
pass
return answer
딕셔너리에는 해당 id의 최종적인 이름만 저장해놓고 출력 메세지는 따로 저장해줌.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Python] 연속 부분 수열 합의 개수 (0) | 2023.01.20 |
---|---|
[Python] 가장 가까운 같은 글자 (0) | 2023.01.16 |
[Python] 피로도 (0) | 2023.01.12 |
[Python] 푸드 파이트 (0) | 2023.01.09 |
[Python] 귤 고르기 (0) | 2023.01.08 |