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