Algorithm/Programmers

[Python] 오픈채팅방

느낌표 공장장 2021. 5. 7. 01:23
def solution(record):
    log = {}
    ment = []
    answer = []

    enter_chat = "님이 들어왔습니다."
    leave_chat = "님이 나갔습니다."
    
    for chat in record :
        temp = []
        temp = chat.split(" ")
            
        if temp[0] == "Enter" :
            log[temp[1]] = temp[2] 
            ment.append([temp[1], enter_chat])
        elif temp[0] == "Leave" :
            ment.append([temp[1], leave_chat])
        elif temp[0] == "Change" :
            log[temp[1]] = temp[2]

    for i in ment :
        answer.append(log[i[0]]+i[1])

    return answer

 


풀이

 

전체적으로 보자면

1. log라는 이름을 가진 딕셔너리에 id와 닉네임을 저장하고

2. ment라는 리스트에 id와(닉네임X)  "님이 들어왔습니다." 혹은 "님이 나갔습니다."를 기록한 뒤, 

3. 나중에 log딕셔너리에서 id에 맞는 최종적 닉네임 + 멘트를 출력하는 코드이다.

 

1) for문 생성 및 멘트 자르기(?)

for chat in record :
     temp = []
     temp = chat.split(" ") 

① for문을 통해 record에서 기록을 하나씩 받아온다.

② temp라는 리스트에 " "(여백)을 기준으로 나눠준다. 

    ex) "Enter uid1234 Muzi" ➡︎ ["Enter",  "uid1234",  "Muzi"]

 

2) 상태(Enter, Leave, Change)에 따른 조건문 설정

     if temp[0] == "Enter" :
         log[temp[1]] = temp[2] 
         ment.append([temp[1], enter_chat])
     elif temp[0] == "Leave" :
         ment.append([temp[1], leave_chat])
     elif temp[0] == "Change" :
         log[temp[1]] = temp[2]

temp[0]이 

① "Enter" 이면 log 딕셔너리에 id를 키로, 닉네임을 값으로 저장해준다.

      그리고 ment리스트에 id와 "님이 들어왔습니다."를 저장해준다.

② "Leave"이면 ment리스트에 id와 "님이 나갔습니다."를 저장해준다. (따로 아이디, 닉네임 저장할필요 X)

③ "Change"이면 log 딕셔너리의 id를 찾아 새로운 닉네임(temp[2])로 바꿔준다.

 

3) 출력

for i in ment :
     answer.append(log[i[0]]+i[1])

ment 리스트 안의 기록들을 하나씩 받아와 log딕셔너리에서 id(키)를 통해 최종 닉네임(값)을 받아와

answer에 닉네임 + 멘트("님이 나갔습니다." 혹은 "님이 들어왔습니다") 를 추가해준다.

'Algorithm > Programmers' 카테고리의 다른 글

[Python] 로또의 최고 순위와 최저 순위  (0) 2021.05.11
[Python] 소수 만들기  (0) 2021.05.11
[Python] 실패율  (0) 2021.05.02
[Python] 다트 게임  (0) 2021.05.01
[Python] 비밀지도  (0) 2021.04.30