반응형

문제풀이

1. 각 id별 최종 닉네임을 찾는다.

2. record를 적절한 메시지를 출력한다.

 

Python Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def solution(record):
    answer = []
    # d['id'] = nickname
    d = dict()
    tmp = []
    for r in record:
        s = r.split()
        if s[0]=='Enter':
            d[s[1]]=s[2]
            tmp.append(s[:2])
        elif s[0]=='Leave':
            tmp.append(s[:2])
        else :
            d[s[1]]=s[2]
    #print(tmp)
    for t in tmp:
        answer.append(d[t[1]]+'님이 들어왔습니다.' if t[0]=='Enter'
                        else d[t[1]]+'님이 나갔습니다.')
    
    return answer
cs

Line 5 : 나중에 출력할 것을 위해서 Enter와 Leave로 시작되는 레코드만을 담아둡니다.

Line 6~14 :  dictionary를 활용하여 각 id별 최종 닉네임을 구합니다.

Line 16~18 : Line 5에 담긴 레코드를 적절한 메시지로 변경합니다.

 

시간복잡도는 record에 대해 for문이 2번 돌아가므로 O(n)이 됩니다(정확히는 O(2n)).

문제링크

 

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

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

programmers.co.kr

 

 

 

반응형

+ Recent posts