Algorithm/프로그래머스

(파이썬) [알고리즘 문제 풀이] - 오픈 채팅방 (프로그래머스)

Jesse 2021. 1. 14. 02:08

 

오늘은 프로그래머스에서 오픈 채팅방을 파이썬으로 풀어 보았습니다.

이 문제를 풀어가기 위한 포인트들을 적어보겠습니다.

  • 유저들은 고유한 유저 아이디를 갖는다. 

  • 닉네임을 바꾸는 방법은 두가지다. (채팅방 내에서 변경하기, 나갔다가 다른 닉네임으로 들어오기)

유저 아이디와 닉네임을 저장할 자료구조가 필요합니다.

변하지 않는 고유의 값인 유저들의 아이디가 key가 되고 중간에 언제든지 변경 가능한

닉네임은 value가 되겠습니다. 이 부분은 다른 자료구조를 사용한다고 해도 전혀 문제 될껀 없습니다.

알고리즘에는 오직 2개의 loop만 필요합니다.

  1. dictionary 안에 유저 아이디와 닉네임을 저장 (Enter나 change일 경우)
  2. 채팅방에 표시될 메시지를 output으로 리턴할 list에 저장 (Enter나 Leave일 경우)

그러면 위의 알고리즘을 코드에 옮겨 보도록 하겠습니다.

def solution(record):
    answer = []
    id_dict = dict()
    chat_dict = {"Enter": "님이 들어왔습니다.", "Leave": "님이 나갔습니다."}
    assign = ["Enter", "Change"]
    
    for order in record:
        order_list = order.split()
        if order_list[0] in assign:		#Enter나 change
            id_dict[order_list[1]] = order_list[2]
            
    for order in record:
        order_list = order.split()
        if order_list[0] in chat_dict:		#Enter나 Leave
            answer.append(id_dict[order_list[1]] + chat_dict[order_list[0]])
            
    return answer

 record에 담겨 있는 문자열들을 split()을 통하여 리스트에 담았습니다.

그 후에는 위에서 언급한 대로 첫번째 loop에서 유저 아이디와 닉네임을 dictionary에 저장하고

두번째 loop에서 해당 유저 아이디를 찾아서 채팅방에 들어오고 나간게 표시 되도록

문자열을 만들었습니다.