[Python3]프로그래머스_오픈채팅방

Beanzinu·2022년 5월 11일

코딩테스트

목록 보기
28/42

문제출처: https://programmers.co.kr/learn/courses/30/lessons/42888

접근법

문제는 길지만 생각보다 간단한 문제였다.
어떤 유저가 입/퇴장 할 때 마다 로그가 남는 다는 것인데

  1. 로그는 "Enter" "Leave" 시에만 남는다.
  2. 유저이름은 "Enter"시 에 정해진다.
  3. 유저이름이 바뀌는 경우는 2가지이다.
  • 같은 유저가 다른 이름으로 방을 들어 올 경우
  • 유저가 "Change"를 통해 이름을 변경할 경우

나는 dict를 통해 각 로그마다 (uid,username)으로 저장했다.
그리고 answer에 uid + "/님이 들어왔습니다" 의 형태로 저장했는데 이는 나중에 "/"를 기준으로 split 하여 uid를 key로 하는 value로 마지막에 바꿔주었다.
엄청 깔끔한 코드는 아니지만 단순 구현을 하면서 생각나는 부분을 바로바로 해결하면서 풀은 점에서 좋았던 것 같다.

코드

def solution(record):
    answer = []
    d = { }
    for r in record:
        s = r.split(" ")
        if( s[0] == "Enter"):
            d[s[1]] = s[2]
            answer.append(s[1]+"/님이 들어왔습니다.")
        elif( s[0] == "Leave"):
            answer.append(s[1]+"/님이 나갔습니다.")
        elif( s[0] == "Change"):
            d[s[1]] = s[2]
    for i,a in enumerate(answer):
        s = a.split("/")
        answer[i] = d[s[0]] + s[1]
    return answer
profile
당신을 한 줄로 소개해보세요.

0개의 댓글