본문 바로가기

알고리즘

[programmers] 오픈채팅방


로직

 - uid로 사람을 구분하기 위해서 dictionary에 key와 value값으로 하면 바뀔 때 값만 알아서 바꿔준다.

 - uid를 통해 enter, leave를 다 표현한 후, 마지막에 uid에 맞는 최종 이름을 넣어준다.

 

코드

def solution(record):
    answer = []
    users = {}  # {'uid1234':'M', 'uid1234':'P'}
    temp = []  # [['uid1234', '님이 들어왔습니다.' ]] -> 이후에 uid가 최종적으로 결정나면 그 값을 바꿔주기
    for rec in record:
        log = rec.split(' ')

        enter = '님이 들어왔습니다.'
        leave = '님이 나갔습니다.'

        if log[0] == 'Enter':
            users[log[1]] = log[2]
            temp.append([log[1], enter])
            
        elif log[0] == 'Leave':
            temp.append([log[1], leave])

        elif log[0] == 'Change':
            users[log[1]] = log[2]

    for i in temp:
        answer.append(users[i[0]] + i[1])

    return answer

 

주의할 점

1. ** 문제점 : answer.append(f'{users[log[1]]}님이 들어왔습니다.')

   ** 해결책 : users값이 바뀌면 자연스럽게 바뀔까? 싶어 한번 해봤는데 역시나 바뀌지 않는다,,

 

2. ** 문제점 : temp.append([log[1] + enter])
    ** 해결책

          - 여기서 log[1]+enter해버리면 'uid1234님이 들어왔습니다.'처럼 하나의 문장으로 만들어진다.(둘 다 str이라서)

          - 나중에 키값인 uid를 사용하려면 다시 split해야하기때문에 temp라는 리스트안에 [log[1] + enter]로 넣어준다.

'알고리즘' 카테고리의 다른 글

[programmers] 네트워크  (0) 2020.09.04
[programmers] 파일명 정렬  (0) 2020.09.02
[programmers] 뉴스 클러스터링  (0) 2020.08.31
[programmers] 튜플  (0) 2020.08.31
[programmers] 다트 게임  (0) 2020.08.31