def solution(record):
    user_info = {}
    stores = []
    answer = []

    for info in record:
        info = info.split()
        action, user_id, user_name = info[0], info[1], info[2] if info[0]!='Leave' else None
        if action=='Enter':
            user_info[user_id] = user_name
            stores.append((action, user_id))
        if action=='Leave':
            stores.append((action, user_id))
        if action=='Change':
            user_info[user_id] = user_name

    for info in stores:
        action, user_id, user_name = info[0], info[1], user_info[info[1]]
        answer.append(user_name+'님이 '+ ('들어왔습니다.' if action=='Enter' else '나갔습니다.'))

    return answer

생각해보기

  • id 값으로 유저의 이름을 조회할 수 있는 user_info 딕셔너리를 만든다.
  • record 정보를 돈다:
    • Enter일 경우:
      • id 값으로 user_info에서 해당 유저를 찾아 이름을 바꿔준다.
      • stores에 유저의 행동과 유저의 id를 담는다.
    • Leave일 경우:
      • stores에 유저의 행동과 유저의 id를 담는다.
    • Change일 경우:
      • id 값으로 user_info에서 해당 유저를 찾아 이름을 바꿔준다.
  • stores을 돈다.
    • 존재하는 id로 user_info에서 이름을 검색해서 조건에 맞게 출력한다.

+ 따끈한 최근 게시물