[프로그래머스] 카카오 - 오픈채팅방 (Python3)

Song_Song·2021년 9월 4일
0
post-custom-banner

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

문제가 굉장히 길다.

user_dict라는 딕셔너리에 {유저아이디 : 닉네임}을 넣었다. 닉네임은 중복될 수 있으므로 유저아이디를 key 값으로 구분하였다.
처음에는 하나의 for 문으로 Enter, Leave, Change를 모두 분기하여 구현하고자 하였다.
Enter, Leave 명령어가 들어올 때마다 answer 에 메시지를 출력하였고,
Enter시 이미 user_dict에 유저 아이디가 존재할 때, 그리고 change 명령어가 들어올 때 닉네임을 변경하는 함수를 만들어(아래 주석 처리) 풀고자 하였다. ==> 실패

하지만, DB에 저장하듯이 유저아이디와 닉네임의 최종본을 만들고 Enter, Leave 에 해당되는 메시지 값을 찍어서 풀어야 했다. 즉 최종적으로 변경된 닉네임이 출력되기 때문에 Change에 해당되는 로직은 구현할 필요가 없었다.

나의 풀이

def solution(record):
    answer = []
    user_dict = {}
   
    for st in record:
        now_st = st.split()
        command = now_st[0]
      
        if command == "Enter" or command == "Change":
            user_id = now_st[1]
            nickname = now_st[2]
         
            user_dict[user_id] = nickname
        
    for st in record:
        now_st = st.split()
   
        command = now_st[0]
        user_id = now_st[1]
  
        if command == "Enter":
            answer.append(user_dict[user_id]+"님이 들어왔습니다.")
        elif command == "Leave":
            answer.append(user_dict[user_id]+"님이 나갔습니다.")
  
    return answer

# def changeNickname(key, value, name_list):
#     for i in range(len(name_list)):
#         name_list[i] = name_list[i].replace(key, value)
#     return name_list
profile
성장을 위한 정리 블로그
post-custom-banner

0개의 댓글