본문 바로가기

그 땐 Algorithm했지/그 땐 Programmers했지

[TAVE/level 2] Python | 오픈채팅방

728x90

문제

내 풀이
def solution(record):
    answer = []
    member_dict = {}
    for each_record in record:
        each_record_list = each_record.split(" ") #['Enter', 'uid1234', 'Muzi']

        #멤버 리스트를 만들어준다. ex) {'uid1234' : 'Muzi'}
        try:
            member_dict[each_record_list[1]] = each_record_list[2]
        except IndexError:
            pass
        
        #누가 들어오고 나갔는지 기록을 남긴다.
        #ex) ['uid1234 들어왔습니다.', 'uid4567 들어왔습니다.', 'uid1234 나갔습니다.', 'uid1234 들어왔습니다.']
        if each_record_list[0] == "Enter":
            answer.append("{} 들어왔습니다.".format(each_record_list[1]))
        elif each_record_list[0] == "Leave":
            answer.append("{} 나갔습니다.".format(each_record_list[1]))
        else:
            pass
    
    for idx, management_record in enumerate(answer):
        management_record_list = management_record.split(" ")
        answer[idx] = answer[idx].replace(management_record_list[0], '{}님이'.format(member_dict[management_record_list[0]]))

    return answer

👉🏻누가 들어가고 나갔는지유저 아이디와 닉네임을 매칭하는게 중요하다고 생각해서 아래와 같은 순서로 풀었다.

  • record를 for문으로 돌리며 공백을 기준으로 each_record_list라는 리스트로 나누었다. 
  • member_dict라는 딕셔너리에 유저 아이디(each_record_list[1])를 키로 닉네임(each_record_list[2])을 값으로 넣었다.
  • each_record_list[0]으로 해당 유저가 카톡방에 들어왔는지 나갔는지 판단해 아이디와 내용을 answer에 저장한다.
  • 다시 for문을 돌리며 answer에 저장된 유저 아이디를 닉네임으로 바꿔준다.

 

✍🏻IndexError: 채팅방을 나가는 경우(ex)"Leave uid1234") each_record_list[2]가 존재하지 않으므로 에러가 떠서 except로 처리했다.

✍🏻format: 문자열 중간 넣고 싶은 자리에 {}중괄호를 넣고 format을 이용해 넣고 싶은 값을 설정해준다.

 

🐰시간이 좀 걸리긴 했는데 첫시도에 통과해서 짱신낭

728x90