본문 바로가기
Algorithm/note

[2019 KAKAO BR] 오픈채팅방

by akatapata 2022. 1. 27.

오픈채팅방

  • 유저 아이디는 고유
  • 닉네임을 사용하는 오픈채팅방, 닉네임은 중복허용
  • 채팅방 나가거나 들어오면 '\닉네임님이 들어오셨습니다.', '\닉네임님이 나갔습니다.' 메시지 출력
  • 닉네임 변경시 기존 메시지의 닉네임도 변경된다
  • 닉네임은 채팅방에서 변경하거나 나갔다 들어오면서 변경
  • 채팅방 출입과 닉네임을 변경한 기록 record가 주어질때 최종적인 채팅방 메시지

Solution

  • 사용자별 출입 기록을 순서대로 기록(id, leave or enter)
  • 사용자의 닉네임을 딕셔니리에 저장, 가장 마지막에 사용한 닉네임으로 최종 메시지 생성

Code

def solution(record):

    results = []

    # nicks[id] = nick
    nicks=defaultdict(str)

    # (id, state) 
    # id : uid1234, 
    # state : enter-True leave-False
    events = []    

    for row in record:  
        row = row.split()
        what , who = row[0],row[1]
        if what == 'Enter':
            nicks[who] = row[2]
            events.append((who,True))
        elif what == 'Leave':
            events.append((who,False))
        else :
            nicks[who] = row[2]

    for who, enter in events:        
        if enter : results.append(''.join([nicks[who],'님이 들어왔습니다.']))
        else : results.append(''.join([nicks[who],'님이 나갔습니다.']))

    return results

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

[2019 KAKAO BR] 후보키  (0) 2022.02.03
[2019 KAKAO BR] 실패율  (0) 2022.01.27
[2019 KAKAO BR] 무지의 먹방 라이브  (0) 2022.01.27