2019 KAKAO BLIND RECRUITMENT 오픈채팅방 파이썬
바로 이전에 풀었던 문자열 압축 문제와 동일한 2레벨 문제입니다.
접근 방식
- 입력받은 기록을 Action / userid / nickname으로 분리합니다.
{userid : nickname}
형태로 저장합니다.- 핵심은
userid
를 Primary Key로 활용하여 각 사용자를 구분짓는 가장 중요한 요소로 관리했습니다. - 첫번째 for문에서는 출력 대신
{userid : nickname}
을 갱신해줍니다. - 두번째 for문에서 갱신된 dictionary를 기반으로 순서대로 출력해줍니다.
def solution(record):
result = []
userid = {}
for i in record:
word = i.strip()[0:].split()
if word[0] == "Leave":
userid[word[1]] = userid.get(word[1])
else:
userid[word[1]] = word[2]
if word[0] == "Enter":
if userid.get(word[1]) != word[2]:
userid[word[1]] = word[2]
elif word[0] == "Change":
userid[word[1]] = word[2]
for i in record:
word = i.strip()[0:].split()
if word[0] == "Enter":
result.append(f"{userid[word[1]]}님이 들어왔습니다.")
elif word[0] == "Leave":
result.append(f"{userid[word[1]]}님이 나갔습니다.")
elif word[0] == "Change":
pass
return result
해당 문제의 모범 답안을 살펴보면 대부분 10줄 이하의 짧은 코드로
해결할 수 있었습니다. 코드를 좀 더 분석해서 짧게 줄여나가는 연습이 필요한 것 같습니다.
알고리즘도 모든 것과 마찬가지로 꾸준한 연습과 이해를 바탕으로 실력이 향상합니다.
Just do it & Keep steady
댓글남기기