여름의 서재

[프로그래머스] 오픈 채팅방 (파이썬) 본문

알고리즘/프로그래머스

[프로그래머스] 오픈 채팅방 (파이썬)

엉아_ 2022. 1. 7. 20:02
728x90

📕 문제

https://programmers.co.kr/learn/courses/30/lessons/42888

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr

 

💡 풀이법

1. 들어오고 나가는 행위를 담을 리스트 actions와 그때마다의 행위의 주체를 담을 리스트 users를 만든다. 그리고 user들의 닉네임을 담을 딕셔너리 nicknames를 만들었다.

2. record를 돌면서 enter일때는 actions에 0을 추가하고 닉네임을 갱신한다. leave일때는 actions에 1을 추가한다. change일때는 닉네임만 갱신시킨다.

3. users와 actions를 zip을 이용해 같이 돌면서 action이 0일때와 1일때 각각의 맞는 글을 answer에 추가한다.

 

def solution(record):
    answer = []
    actions = []
    users = []
    nicknames = {}
    for rec in record:
        rec = rec.split()
        if rec[0] == "Enter":
            actions.append(0)
            nicknames[rec[1]] = rec[2]
        elif rec[0] == "Leave" :
            actions.append(1)
        else:
            nicknames[rec[1]] = rec[2]
            continue
        users.append(rec[1])
    
    for user, action in zip(users, actions):
        nickname = nicknames[user]
        if action:
            answer.append(nickname + "님이 나갔습니다.")
        else:
            answer.append(nickname + "님이 들어왔습니다.")
    return answer
Comments