오늘은 프로그래머스에서 오픈 채팅방을 파이썬으로 풀어 보았습니다.
이 문제를 풀어가기 위한 포인트들을 적어보겠습니다.
-
유저들은 고유한 유저 아이디를 갖는다.
-
닉네임을 바꾸는 방법은 두가지다. (채팅방 내에서 변경하기, 나갔다가 다른 닉네임으로 들어오기)
유저 아이디와 닉네임을 저장할 자료구조가 필요합니다.
저
변하지 않는 고유의 값인 유저들의 아이디가 key가 되고 중간에 언제든지 변경 가능한
닉네임은 value가 되겠습니다. 이 부분은 다른 자료구조를 사용한다고 해도 전혀 문제 될껀 없습니다.
알고리즘에는 오직 2개의 loop만 필요합니다.
- dictionary 안에 유저 아이디와 닉네임을 저장 (Enter나 change일 경우)
- 채팅방에 표시될 메시지를 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에서 해당 유저 아이디를 찾아서 채팅방에 들어오고 나간게 표시 되도록
문자열을 만들었습니다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
(파이썬) [알고리즘 문제 풀이] - 같은 숫자는 싫어 (프로그래머스) (0) | 2021.01.16 |
---|---|
(파이썬) [알고리즘 문제 풀이] - 영어 끝말잇기 (프로그래머스) (0) | 2021.01.15 |
(파이썬) [알고리즘 문제 풀이] - 위장 (프로그래머스) (0) | 2021.01.12 |
[알고리즘 문제 풀이] - 더 맵게 (프로그래머스) (0) | 2021.01.12 |
[알고리즘 문제 풀이] - 스킬 트리 (프로그래머스) (0) | 2021.01.07 |