새소식

반응형
Algotithms

[2019 KAKAO BLIND RECRUITMENT] 오픈 채팅방

  • -
728x90
반응형

문제

  • 관리자가 보게 될 메세지를 문자열 배열 형태로 리턴하기
    • 채팅방에 누군가 들어오거나 나갈 때 메세지가 출력된다.
    • 닉네임을 변경하면 기존 채팅방에 출력되어 있던 메세지의 닉네임도 전부 변경된다.
  • 1 <= record <= 100,000

 

풀이 (20mins)

  • 중복 닉네임을 허용하므로 유저 아이디별 닉네임 관리가 필요하다.
  • 들어오고 나갈 때마다 (유저 아이디, "님이 들어왔습니다.") 형식으로 저장하고, 유저 아이디를 닉네임으로 변경하기

 

테스트 26 〉통과 (167.30ms, 41.9MB)
from collections import defaultdict

def solution(records):
    
    logs = []
    nick_name = defaultdict(str)
    m = ["님이 나갔습니다.", "님이 들어왔습니다."]
    for record in records :
        cmd = record.split()

        # 닉네임 변경
        if cmd[0] == 'Change' :
            nick_name[cmd[1]] = cmd[2]
        # 들어오기 / 나가기
        else:
            x = 1 if cmd[0] == 'Enter' else 0
            if x : nick_name[cmd[1]] = cmd[2]   # 들어오는 경우 닉네임 추가
            logs.append((cmd[1], m[x]))
    
    # 관리자가 보게 될 전체 메세지 로그 완성하기
    for i in range(len(logs)) :
        uid, message = logs[i]
        logs[i] = nick_name[uid]+message
    return logs

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.