728x90
https://programmers.co.kr/learn/courses/30/lessons/42888
코드 :
def solution(record):
answer = []
userDB = {}
actions = []
for event in record :
info = event.split()
action,userid = info[0],info[1]
if action in ("Enter", "Change") :
nickname = info[2]
userDB[userid] = nickname # 최신 닉네임으로 변경
actions.append((action,userid))
for actionInfo in actions:
action,userid = actionInfo[0], actionInfo[1]
if action == "Enter" :
answer.append(f'{userDB[userid]}님이 들어왔습니다.')
elif action == 'Leave' :
answer.append(f'{userDB[userid]}님이 나갔습니다.')
return answer
코드를 막상 보면 그렇게 어렵지않은데
처음 딱 문제를 보면 왜이리 어려울까
<딕셔너리 하나로 푼 코드 > :
def solution(record):
answer = []
userDB = {}
for re in record :
re = re.split()
action,uid = re[0], re[1]
if action in ("Change" , "Enter") :
name = re[2]
userDB[uid] = name
for re in record :
re = re.split()
uid= re[1]
if re[0] == 'Enter' :
answer.append(f'{userDB[uid]}님이 들어왔습니다.')
elif re[0] == 'Leave' :
answer.append(f'{userDB[uid]}님이 나갔습니다.')
return answer
변수 명을 신경쓰자
약 4개월이 지난 이후에 풀어보았다. 근데 풀렸다...!!
지금 만든 코드가 더 간단한듯하다.
def solution(record):
answer = []
dic = {}
for r in record :
r = r.split()
if r[0] != 'Leave' :
dic[r[1]] = r[2]
for r in record :
r = r.split()
if r[0] == 'Enter' :
answer.append(f'{dic[r[1]]}님이 들어왔습니다.')
elif r[0] == 'Leave' :
answer.append(f'{dic[r[1]]}님이 나갔습니다.')
return answer
Leave가 아니라면 이름을 갱신해주고
다시 한번 record를 돌면서 enter일 때 들어왔다고 answer에 붙여주고
leave일 때 나갔다고 answer에 붙여준다.
참고 블로그 :
https://latte-is-horse.tistory.com/131
복습 :
✅ 20220629
✅ 20220630
🐾 20221020
반응형
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
[Python/프로그래머스]메뉴 리뉴얼 (0) | 2022.06.29 |
---|---|
[Python/프로그래머스] 숫자 문자열과 영단어 (Level 1) (0) | 2022.06.29 |
[Python/프로그래머스]문자열 압축 (0) | 2022.06.28 |
[Python/프로그래머스]신규아이디추천_구현 (0) | 2022.06.28 |
[Python/프로그래머스]신고 결과 받기 (0) | 2022.06.28 |