Coding - Algo/python

[프로그래머스] 오픈채팅방 (python 파이썬)

jainn 2021. 6. 29. 17:16
728x90

문제

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

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

 

풀이 및 소스코드

닉네임은 변경이 가능하므로 딕셔너리에 담아서 {id:nickname} 정의해줬다.

stack 에는 id 값과 함께 들어왔는지(1) 나갔는지(0)를 담아준 후 한 번에 answer에 결과 값을 담아줬다.

def solution(record):
    answer = []
    stack = []
    dic = {}
    for r in record:
        if r[:5] == 'Leave':
            c, u_id = r.split()
            stack.append((u_id, '0'))
        else:
            c, u_id, nick = r.split()
            if c == 'Enter':
                dic[u_id] = nick
                stack.append((u_id, '1')) #1이 들어온 것
            else:
                dic[u_id] = nick
    for u_id, c in stack:
        if c == '1':
            answer.append((dic[u_id]+"님이 들어왔습니다."))
        else:
            answer.append((dic[u_id]+"님이 나갔습니다."))
    return answer

 

반응형