티스토리 뷰

반응형

문제

 

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

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

programmers.co.kr

 

풀이

들어온 문자열 중 출력해야하는 명령은 큐에 담아 관리했고,

uid와 닉네임 관리는 파이썬의 dictionary 자료형을 사용해서 관리했다. 

 

from collections import deque

def solution(record):

    # 큐로 관리 
    queue = deque()
    dic = {}

    # 문자열 하나씩
    for each in record:
        cmd = each.split(" ")[0]
        uid = each.split(" ")[1]

        if cmd == "Enter":
            dic[uid] = each.split(" ")[2]
            queue.append([0, uid])

        elif cmd == "Change":
            dic[uid] = each.split(" ")[2]

        else:
            queue.append([1, uid])

    # 모든 문자열을 다 넣었으면 answer에 담기
    answer = []
    cmdlist = ["님이 들어왔습니다.", "님이 나갔습니다."]

    while queue:
        ncmd, nuid = queue.popleft()

        # cmd 0: enter, 1: leave
        answer.append(dic[nuid] + cmdlist[ncmd])

    return answer

 

* dictionary 복습

선언
dic = {}

 

append/change

dic[key] = value

 

접근(키로 밸류 얻기)

dic[key]

dic.get(key)

 

밸류로 키 찾을땐 포문 돌리기

반응형