Programmers_2019 카카오 오픈 채팅방
프로그래머스 -오픈 채팅방 문제 입니다.
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42888#
2. 분류 및 난이도
Programmers 문제입니다.
2019 KaKao Blind Recuritment 문제입니다. Level 2난이도의 문제입니다.
3. 생각한 것들(문제 접근 방법)
- 채팅방의 로그를 찍어서 나중에 뿌려줍니다.
- Enter, Leave, Change 3가지 상태가 주어지는데, Enter와 Leave의 경우 로그에 찍으면 되고, Change인 경우 채팅방의 닉네임을 바꿔줘야합니다.
- 마지막의 로그들이 중요하기에(마지막에 이름을 바꾸는 게 중요하므로) record의 맨 끝에서 처음으로 접근하는 방식으로 코드를 작성하였으나, Runtime Error가 떠서 처음부터 접근하는 for문을 2번 작성하였습니다.
4. 접근 방법을 적용한 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def solution(record):
# 정답
answer = []
dic = {}
# 로그
log =[]
for i in range(len(record)):
# " "를 기준으로 분리합니다.
query = record[i].split(" ")
# Leave가 아닌경우, dic에 중복값을 없애주기 위해 저장해줍니다.
if(query[0] != "Leave") :
dic[query[1]] = query[2]
# Enter나 Leave인 경우 log list에 id와 심볼을 저장합니다.
if(query[0] == "Enter") :
log.append((query[1],"E"))
elif(query[0] =="Leave") :
log.append((query[1],"L"))
# log를 돌면서 answer에 맞는 답안으로 바꿔줍니다.
for i in range(len(log)):
if log[i][1]=="E":
answer.append(dic[log[i][0]] + "님이 들어왔습니다.")
else:
answer.append(dic[log[i][0]] + "님이 나갔습니다.")
return answer
5. 결과
필요시. c++ 짜드리겠습니다.
This post is licensed under CC BY 4.0 by the author.