[구현] PRG 42888: 오픈채팅방

사용 언어: python 3.9.5

❓ Problem

문제 설명

https://programmers.co.kr/learn/courses/30/lessons/42888

난이도

level 2

🚩 Solution

시도 01)

1. 접근법

Change에서만 id에 따른 이름 변경이 이루어진다고 잘못 접근함

Enter로도 이름이 바뀔 수 있음

코드짜다가 뭔가 잘 안되길래 문제를 다시 읽고 잘못된 것을 알아차림


시도 02)

1. 접근법

id에 따른 이름표를 딕셔너리에 저장하고

record를 돌면서 딕셔너리에 해당하는 이름을 가져옴

2. 코드

import collections
def solution(record):
    answer = []
    rec = []
    for r in record:
        rec.append(r.split(' '))

    dic = collections.defaultdict(str)
    for r in rec:
        if r[0] != 'Leave':
            dic[r[1]] = r[2]

    str1 = ''
    for r in rec:
        if r[0] == 'Enter':
            str1 = dic[r[1]] + "님이 들어왔습니다."
        elif r[0] == 'Leave':
            str1 = dic[r[1]] + "님이 나갔습니다."
        else: # 'Change'
            continue

        answer.append(str1)

    return answer

3. 시간복잡도

O(n)O(n)

record를 3번 돈다

O(3n) = O(n)

4. 결과

성공

5. 소요 시간

48분

(읽기 3분, 풀기 45분)

📕 피드백

1. 검색한 내용

2. 실수

문제 접근을 잘못함

3. 발전 방향 (개선/추가사항)

4. 다른 사람 풀이

좋은 웹페이지 즐겨찾기