오픈채팅방

하이·2022년 5월 5일
0

💣 문제

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

신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다.

"[닉네임]님이 들어왔습니다."

채팅방에서 누군가 나가면 다음 메시지가 출력된다.

"[닉네임]님이 나갔습니다."

채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다.

채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다.
채팅방에서 닉네임을 변경한다.
닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된다.

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

💬 내 접근 방식

def solution(record):
    user = {}
    answer = []
    for i in record:
        arg = i.split()
        if arg[0] == 'Enter':
            user[arg[1]] = arg[2]
        elif arg[0] == 'Change':
            user[arg[1]] = arg[2]
    for i in record:
        arg = i.split()
        if arg[0] == 'Enter':
            answer.append(user[arg[1]] + "님이 들어왔습니다.")
        elif arg[0] == 'Leave':
            answer.append(user[arg[1]] + "님이 나갔습니다.")
    return answer

뒤에서 어떤 일이 벌어지는지 모르니, 한 번 배열을 순회해야한다 생각하면 편해진다. 역방향으로 순회하면 편해질 것 같지만, 결국 끝까지 어떤 명령어가 있는지 봐야한다. 따라서 정방향으로 한 번 순회하고 user_id 의 닉네임을 정한 뒤, 출력만 신경써서 해주면 된다.

💯 제출 후 확인한 풀이

구조들은 다들 비슷했다. 코드 줄 수를 조금 더 간결하게 할 수 있는 방법들이 보이긴 했지만. 코딩 테스트가 아니라면 if문을 조금 더 신경써서 줄이는 방법을 생각해 볼 만한 것 같다.

profile
안녕하세요

0개의 댓글