Algorithm/programers

해쉬_완주하지 못한 선수

casylm 2022. 10. 26. 22:39

시도_1

def solution(participant, completion):
    answer = ''
    
    # 주의: 참가자 중에는 동명이인이 있을 수 있습니다.
    for p in completion:
        if p in participant:
            participant[participant.index(p)] = '0'
    
    for z in participant:
        if z != '0':
            answer = z
            break
            
    return answer

시간 초과

 

시도2

#풀이2_dic 이용
# get(i,x) => i 없으면 x return

def solution(participant, completion):
    answer = ''
    d = {}
    
    # 참가자들을 삽입
    for p in participant:
        if p not in d.keys():
            d.update({p:1})
        else:
            d[p] +=1
    # 완료한 참가자 제거    
    for p in completion:
        d[p] -=1
    
    # dic에 0이 아닌 참가자는 동명이인이거나 완료 못함
    for k,v in d.items():
        if v != 0:
            answer = k
            break
    return answer

 

해쉬 개념을 사용하면 효율성 테스트 통과가 가능하다 => dic 활용