2019 KAKAO BLIND RECRUITMENT 오픈채팅방 파이썬

최대 1 분 소요

2020 KAKAO BLIND RECRUITMENT 문자열 압축 파이썬 풀이

바로 이전에 풀었던 문자열 압축 문제와 동일한 2레벨 문제입니다.

접근 방식

  1. 입력받은 기록을 Action / userid / nickname으로 분리합니다.
  2. {userid : nickname} 형태로 저장합니다.
  3. 핵심은 userid를 Primary Key로 활용하여 각 사용자를 구분짓는 가장 중요한 요소로 관리했습니다.
  4. 첫번째 for문에서는 출력 대신 {userid : nickname}을 갱신해줍니다.
  5. 두번째 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

댓글남기기