알고리즘 풀이/프로그래머스

[Level 2] 오픈채팅방

mhko411 2021. 8. 30. 22:37
728x90

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

 

코딩테스트 연습 - 오픈채팅방

오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오

programmers.co.kr


접근

어떤 한 사용자는 들어왔다 나갈 수 있고 다시 들어오면서 기존의 닉네임과 다르게 입장할 수도 있다. 또한 입장 후에 닉네임을 변경할 수도 있으며 사용자들은 중복된 닉네임을 사용할 수 있다.

따라서 주어지는 조건 중에 userId를 활용하였고 user라는 딕셔너리를 만들어 userId에 해당하는 닉네임을 저장해두었다가 활용하였다.

 

구현

- users라는 딕셔너리를 생성한다.

- Enter 또는 Change일 때에만 users에 user의 ID를 Key로 저장한다.

    users = dict()
    for record in records:
        record = record.split(' ')
        if record[0] == 'Leave':
            continue
        users[record[1]] = record[2]

- 이제 Enter와 Leave에 대해 users에 저장되어 있는 것을 활용하여 메시지를 전달한다.

- 해당 user의 ID로 딕셔너리 users를 검색하여 들어왔다는 것과 나갔다는 메시지를 answer에 추가한다.

    for record in records:
        record = record.split(' ')
        if record[0] == 'Enter':
            answer.append(users[record[1]]+'님이 들어왔습니다.')
        elif record[0] == 'Leave':
            answer.append(users[record[1]]+'님이 나갔습니다.')
    return answer

전체 코드

def solution(records):
    answer = []
    users = dict()
    for record in records:
        record = record.split(' ')
        if record[0] == 'Leave':
            continue
        users[record[1]] = record[2]
    
    for record in records:
        record = record.split(' ')
        if record[0] == 'Enter':
            answer.append(users[record[1]]+'님이 들어왔습니다.')
        elif record[0] == 'Leave':
            answer.append(users[record[1]]+'님이 나갔습니다.')
    return answer

'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글

[Level 2] 순위 검색  (0) 2021.09.05
[Level 2] 메뉴 리뉴얼  (0) 2021.09.02
[Level 2] 프렌즈 4블록  (0) 2021.08.29
[Level 2] 뉴스 클러스터링  (0) 2021.08.29
[Level 1] 실패율  (0) 2021.08.03