코테 준비/Hash map

[프로그래머스] 오픈채팅방

imsmile2000 2024. 2. 2. 10:59

처음에는 노가다로 풀었는데 25번 테스트케이스부터 시간 초과가 났다...

def solution(record):
    answer = []
    id=[]
    for i in record:
        i=i.split(' ')
        if i[0]=='Enter':
            id.append(['Enter',i[1],i[2]])
            for j in range(len(id)):
                if id[j][1]==i[1] and len(id[j])==3:
                    id[j][2]=i[2]
        elif i[0]=='Leave':
            for j in range(len(id)):
                if id[j][1]==i[1]:
                    id.append(['Leave',i[1],id[j][2]])
                    break           
        elif i[0]=='Change':
            for j in range(len(id)):
                if id[j][1]==i[1]:
                    id[j][2]=i[2]
    for i in id:
        if i[0]=='Enter':
            answer.append(i[2]+'님이 들어왔습니다.')
        elif i[0]=='Leave':
            answer.append(i[2]+'님이 나갔습니다.')
            
    return answer

 

 

이중 for문 때문이다. 따라서 dictionary로 바꾸고 이중 for문을 제거하였다.

def solution(record):
    answer = []
    id={}
    for i in record:
        i=i.split(' ')
        if i[0]=='Enter' or i[0]=='Change':
            id[i[1]]=i[2]

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