Python3/프로그래머스

2022.03.09 [프로그래머스] (python 파이썬) 오픈채팅방

ian's coding 2022. 3. 9. 22:13
728x90
반응형

 

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

 

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

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

programmers.co.kr


풀이

문제에서 유저가 닉네임이 바뀌면 채팅의 기록이 모두 바뀐 닉네임으로 바껴야한다.

그래서 딕셔너리를 이용해서 record에서 나온 유저별 닉네임을 저장해 주었다. 

새로운 유저가 들어오면 저장되고 기존의 유저가 닉네임을 변경하면 업데이트가 된다.

여기서

if text[0]!='Leave':
            nick[text[1]]=text[2]
위의 조건을 넣어준 이유는 text[0]이 Leave면 text[2]가 없어 인덱스 오류가 발생하기 때문이다.
모든 유저의 닉네임을 딕셔너리에 저장했으면 다시 record의 인덱스로 for문을 돌렸다.
chat이란 문자형 변수를 선언한 뒤, 해당 인덱스의 유저의 닉네임을 추가해주었다.
그리고 text[0]의 문자열에 따라 들어왔는지 나갔는지를 저장해 answer배열에 추가해주었다.
만약 text[0]이 Leave면 해당 문자열은 answer에 추가 되지않고 다음 for문으로 넘어가게했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def solution(record):
    answer = []
    nick={}
    for i in record:
        text=list(i.split())
        if text[0]!='Leave':
            nick[text[1]]=text[2]
    for i in record:
        text=list(i.split())
        chat=''
        chat+=nick[text[1]]+'님이 '
        if text[0]=='Enter':
            chat+='들어왔습니다.'
            answer.append(chat)
        elif text[0]=='Leave':
            chat+='나갔습니다.'
            answer.append(chat)
    return answer
cs

 

 

 

 

 

728x90
반응형