Lv2 - 오픈채팅방

LeeKyoungChang·2022년 4월 21일
0

Algorithm

목록 보기
171/203
post-thumbnail

📚 Lv2 - 오픈채팅방

오픈채팅방

 

이해

ex)

Enter uid1234 Muzi
Enter uid4567 Prodo
Leave uid1234
Enter uid1234 Prodo
Change uid4567 Ryan

Prodo님이 들어왔습니다. 
Ryan님이 들어왔습니다.
Prodo님이 나갔습니다.
Prodo님이 들어왔습니다.

 

결과 입력을 보면
Enter인 경우 : Muzi님 들어왔습니다.
Leave인 경우 : Muzi님 나갔습니다.
Change인 경우 : x

이를 알 수 있다.

중간에 닉네임이 교체 될 수도 있다.
그래서 딕셔너리을 사용한다. 중간에 key에 대한 value를 변경할 수 있으니, 딕셔너리를 사용한다!
(key : 아이디, value : 닉네임)

Enter, Leave 입력을 keyvalue로 저장한다.

	# 문자열 입력 : EnterLeaveChange, 유저아이디, 닉네임
    for in_record in record:
        record_list.append(in_record.split(' '))

	# 입력된 문자열 만큼 반복문을 돌린다.
    for i in range(len(record_list)):
		# 첫 번째 입력 값이 Enter이면
        if record_list[i][0] in 'Enter':
			# 유저아이디와 Enter 표시 를 list에 저장
            cur_id_inout.append((record_list[i][1], 1))
			# 딕셔너리 key로는 유저아이디 value로는 닉네임
            dist[record_list[i][1]] = record_list[i][2]
        elif record_list[i][0] in 'Leave':
			# leave라면 유저아이디와 leave 표시를 list에 저장
            cur_id_inout.append((record_list[i][1], -1))
        else:
			# change라면 key 유저아이디에 대한 value를 변경한다.
            dist[record_list[i][1]] = record_list[i][2]

 

소스

def solution(record):
    answer = []
    cur_id_inout = []
    dist = {}
    record_list = []

    # 문자열 입력 : EnterLeaveChange, 유저아이디, 닉네임
    for in_record in record:
        record_list.append(in_record.split(' '))

    # 입력된 문자열 만큼 반복문을 돌린다.
    for i in range(len(record_list)):
        # 첫 번째 입력 값이 Enter이면
        if record_list[i][0] in 'Enter':
            # 유저아이디와 Enter 표시 를 list에 저장
            cur_id_inout.append((record_list[i][1], 1))
            # 딕셔너리 key로는 유저아이디 value로는 닉네임
            dist[record_list[i][1]] = record_list[i][2]
        elif record_list[i][0] in 'Leave':
            # leave라면 유저아이디와 leave 표시를 list에 저장
            cur_id_inout.append((record_list[i][1], -1))
        else:
            # change라면 key 유저아이디에 대한 value를 변경한다.
            dist[record_list[i][1]] = record_list[i][2]

    for name, eorl in cur_id_inout:
        if eorl == 1:
            answer.append(dist[name] + "님이 들어왔습니다.")
        else:
            answer.append(dist[name] + "님이 나갔습니다.")

    return answer


print(solution(["Enter uid1234 Muzi", "Enter uid4567 Prodo", "Leave uid1234", "Enter uid1234 Prodo", "Change uid4567 Ryan"]))
스크린샷 2022-04-21 오후 11 33 03

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글