-
[프로그래머스] 오픈채팅방코테 준비/Hash map 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
'코테 준비 > Hash map' 카테고리의 다른 글
[백준] 1269. 대칭 차집합 (0) 2023.01.24 [백준] 10815. 숫자카드 (다시보기) (1) 2023.01.19 9375. 패션왕 신해빈 ( 조합 공식의 중요성) (0) 2023.01.05 1620. 포켓몬 (17219. 비밀번호 찾기와 유사) (0) 2023.01.03 17219. 비밀번호 찾기 (딕셔너리 시간 단축) (0) 2022.12.29