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

 

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

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

programmers.co.kr


풀이 과정

아이디를 변경하면 이전 입장 퇴장 메세지의 표시된 아이디까지 모두 변경될 때, 최종적으로 방이 개설한 사람이 보게되는 메세지를 구해달라는 문제이다.

 

record를 2번 순회하면 된다. 1번째는 Enter, Change를 살펴보면서 최종적으로 유저 아이디가 어떤 닉네임에 대응되는지를 구하고, 2번째에서는 Enter, Leave를 살펴보면서 유저 아이디에 최종적으로 대응되는 닉네임을 출력해주면 된다.

 

유저 아이디를 키, 닉네임을 밸류로 갖는 딕셔너리를 사용하여 밸류값을 갱신해가면서 문제를 해결하였다.


소스 코드

def solution(record):
    answer = []
    uid_nickname = {}
    
    for rec in record:
        rec_list = rec.split()
        if rec_list[0] in ['Enter', 'Change']:
            uid_nickname[rec_list[1]] = [rec_list[2]]
    
    for rec in record:
        rec_list = rec.split()
        if rec_list[0] == 'Enter':
            answer.append(f'{uid_nickname[rec_list[1]][-1]}님이 들어왔습니다.')
        elif rec_list[0] == 'Leave':
            answer.append(f'{uid_nickname[rec_list[1]][-1]}님이 나갔습니다.')
        
    
    return answer

+ Recent posts