<문제출처>
https://school.programmers.co.kr/learn/courses/30/lessons/42888
<체크포인트>
시간 | 쉽게해결 | 1시간이내 | 1시간 이상 or 몇 일 걸림 | 솔루션 보고 해결 |
체감 난이도 | 하 | 중 | 상 | 최상 |
이해도 | 완벽히이해 | 다소 헷갈리는 부분있음 | 이해못함 | |
덧붙일 말 |
요구 조건에 맞게 단순히 구현하면 되는 문제.
대신 닉네임, 아이디 등을 참조함에 있어서 dict를 활용하여 탐색시간을 효율적으로 활용하자.
문제를 풀기 전에 저장형태를 어떻게 할지 눈에 보이도록 써놓으면 조금 편한 것 같다.
ex) {"uid1234" : "muzi", "uid4567" : "prodo"...}
최종코드
def solution(record):
pre_nick = dict()
b = []
for line in record:
cmds = list(line.split())
if line.startswith("Leave"): # 나가기
b.append((cmds[1], False)) # 입출 기록
if line.startswith("Enter"):
b.append((user, True)) # 입출 기록
user, nickname = cmds[1], cmds[2]
pre_nick[user] = nickname # 현재 닉네임상태
if line.startswith("Change"):
user, nickname = cmds[1], cmds[2]
pre_nick[user] = nickname # 닉네임만 변경해준다.
ans = []
# 기록들을 출력값 형식에 맞게 변경
for user, status in b:
user_nick = pre_nick[user]
if status:
message = user_nick + "님이 들어왔습니다."
else:
message = user_nick + "님이 나갔습니다."
ans.append(message)
return ans
-> 중복되는 코드가 많이 있어서 줄이려고 한다면 코드를 많이 줄일 수 있을 것이다. 하지만 가독성이 조금 떨어지고 시간을 정해놓고 풀었기 때문에 크게 코드길이에 대해서는 신경 쓰지 않고 빠르게 구현하는 데에만 집중하였다.
'algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스-파이썬] 연습문제(LV3) : 길 찾기 게임 (0) | 2023.03.10 |
---|---|
[프로그래머스-파이썬] 연습문제(LV4) : 무지의 먹방 라이브 (0) | 2023.03.10 |
[프로그래머스-파이썬] 연습문제(LV1) : 실패율 (0) | 2023.03.10 |
[프로그래머스-MySQL] SQL 고득점 Kit : SELECT (0) | 2023.02.17 |
[프로그래머스-파이썬] 연습문제(LV3) : 인사고과 (0) | 2023.01.25 |