Problem
https://programmers.co.kr/learn/courses/30/lessons/42888
코딩테스트 연습 - 오픈채팅방
오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오
programmers.co.kr
About Problem
문제
1. 사람들이 들어왔는지 나갔는지 닉네임을 변경했는지 구분하기
2. 들어왔을때, "[닉네임]님이 들어왔습니다." 나갔을때, "[닉네임]님이 나갔습니다." 순서대로 리스트에 넣기
3. 닉네임 변경
- 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다.
- 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다.
- 채팅방에서 닉네임을 변경한다.
입출력
입력이 enter과 change는 총 세개의 단어를 받지만 leave는 두개의 단어를 받는다. 이걸 구분하는 것이 중요하다.
그 뒤로는 result에 어떻게 이전 nickname을 바꿀지가 중요하다.
Code
def solution(record):
# nickname dictionary
nickname = {}
# state와 user을 넣을 list
lst = []
# 정답을 넣을 list
answer = []
# 반복문
for i in range(len(record)):
# split으로 분리한 단어들의 숫자로 enter, change와 leave를 구분
if len(record[i].split()) == 2:
state, user = record[i].split()
else:
state, user, name = record[i].split()
# 각 상태별로 list에 값을 넣을 건지 아니면 dictionary value값만 바꿀건지 확인.
if state == "Enter":
nickname[user] = name
lst.append([state, user])
elif state == "Leave":
lst.append([state, user])
else:
nickname[user] = name
# 정답들을 answer list에 넣기
for j in range(len(lst)):
if lst[j][0] == "Enter":
answer.append(f"{nickname[lst[j][1]]}님이 들어왔습니다.")
else:
answer.append(f"{nickname[lst[j][1]]}님이 나갔습니다.")
return answer
'알고리즘 > 알고리즘 공부(python)' 카테고리의 다른 글
백준_2470_두용액/Using(Python/파이썬) (0) | 2022.06.29 |
---|---|
백준_10866_덱/Using(파이썬/Python) (0) | 2022.06.28 |
백준_3273_두 수의 합/Using_파이썬_Python (0) | 2022.06.27 |
백준_1920_수찾기/Using_Python_파이썬 (0) | 2022.06.26 |
백준_2798_블랙잭/Using_python_파이썬 (0) | 2022.06.25 |