본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 오픈채팅방 (python)

by 김홍중 2021. 6. 26.

1. 문제

문제링크

 

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

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

programmers.co.kr

 

2. 설명

 

3. 풀이

- Enter, Change로 변경된 닉네임을 딕셔너리에 저장합니다.

- 원본record의 user_id 중에서 변경된 닉네임의 딕셔너리에 있으면 이를 변경하여 보여지는 메시지를 생성합니다.

 

4. 코드

def make_showing_msg(records, updated_nicknames):
    showing_msg = []
    for record in records:
        record_list = record.split(" ")
        command = record_list[0]
        user_id = record_list[1]
        
        if command == "Enter":
            korean_command = "들어왔습니다."
            new_nickname = record_list[2]
        elif command == "Leave":
            korean_command = "나갔습니다."
        else:
            continue
            
        if user_id in updated_nicknames:
            new_nicknames = updated_nicknames[user_id]

        showing_msg.append(new_nicknames + "님이 " + korean_command)
    return showing_msg

def update_nickames(records, updated_nicknames):
    for record in records[::-1]:
        record_list = record.split(" ")
        command = record_list[0]
        user_id = record_list[1]
        
        if command != "Leave" and not user_id in updated_nicknames:
            new_nickname = record_list[2]
            updated_nicknames[user_id] = new_nickname

def solution(records):
    updated_nicknames = {}

    update_nickames(records, updated_nicknames)

    showing_msg = make_showing_msg(records, updated_nicknames)
    
    return showing_msg

댓글