문제 확인

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이

  • 마지막에 설정한 이름에 따라 기존 메시지는 전부 바뀌게 된다.
  • 반복문을 통해 uid와 마지막 이름 사이 Hash를 구성하고, 이후 f-string을 통해서 출력했다.
  • $2 * O(N)$ 정도의 시간 복잡도를 가지기 때문에, 시간 초과 없이 처리할 수 있다. 
# 입장 : 닉네임이 들어옴 -> 퇴장 : 닉네임님이 나감
# 닉네임 변경 방법 : 채팅방 나간 후, 새로운 닉네임으로 다시 들어감 / 채팅방에서 닉네임 변경
# 변경 -> 기존 출력 메시지 닉넴도 변경

# 유저 구분 -> uid 활용!
# uid 변경한 경우, 기존 메시지까지 변경
# uid : 마지막 이름으로
def solution(record):
    msg_list = []
    last_name = {}
    # uid에 마지막 이름 정보 할당하기
    for r in record:
        info = r.split(" ")
        # 이름 설정/변경이 있는 경우
        if len(info) == 3:
            last_name[info[1]] = info[2]
    for r in record:
        info = r.split(" ")
        if info[0] == "Enter":
            msg_list.append(f"{last_name[info[1]]}님이 들어왔습니다.")
        elif info[0] == "Leave":
            msg_list.append(f"{last_name[info[1]]}님이 나갔습니다.") 
    
    return msg_list