honey_pot

[python] 오픈채팅방 본문

문제 풀이

[python] 오픈채팅방

_tera_ 2021. 11. 24. 18:20

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

def solution(record):
    answer = []
    dic = dict()
    codes = []

    for rec in record:
        codes = list(rec.split(" ")) # 명령어, 아이디, (닉네임)
        if rec[0] != "L":
            
            dic[codes[1]] = codes[2]      
        
    for rec in record:
        codes = list(rec.split(" "))
        if codes[0] == "Enter":
            nick = dic[codes[1]]
            answer.append(nick+"님이 들어왔습니다.")
        if codes[0] == "Leave":
            nick = dic[codes[1]]
            answer.append(nick+"님이 나갔습니다.")
        if codes[0] == "Change":
            continue

    return answer

change를 먼저 반영한 후에 출력해야 하므로 

1. Id를 구분해서 닉네임을 id:nickname 딕셔너리로 저장한다.

2. 처음부터 code, id, nickname 변수에 저장하는 건 다른 명령어는 가능하지만 Leave 명령어가 문장은 문자열이 3개가 아니라 2개이므로 split 했을때 list로 받아야한다.

3. codes 딕셔너리에서 id를 통해 value인 nickname을 얻고 record 요소에서 명령어 부분을 비교해서 answer에 각각 출력값을 넣는다.

'문제 풀이' 카테고리의 다른 글

[Python] 리트코드 4sum  (0) 2022.05.14
[python] 뉴스 클러스터링  (0) 2021.12.13
[python] 메뉴 리뉴얼  (0) 2021.11.20
[python] 괄호 변환  (0) 2021.11.19
[python] 문자열 압축  (0) 2021.11.09
Comments