본문 바로가기
개발/프로그래머스

[파이썬]프로그래머스 level1 해시, 완주하지못한 선수

by 자유로운 코끼리 2020. 9. 1.
728x90

 

def solution(participant, completion):
    for p in completion: 
        participant.remove(p)
    answer=participant[0]
    return answer

효율성에서 실패하였다.

for문이 completion을 도는데

remove함수가 participant를 일일이 확인하며 돌기 때문에

시간복잡도가 높게 계산된 것으로 보인다.

 

함수를 사용할 때도 그 함수의 특징을 잘 생각해봐야겠다는 생각을 하였다.

 

딕셔너리를 이용하여 다시 만들어 보았다.

def solution(participant, completion):
    dict={}
    for p in participant: 
        if p in dict:
            dict[p]+=1
        else:
            dict[p]=1
    for p in completion:
        if dict[p]==1:
            del(dict[p])
        else:
            dict[p]-=1       
    answer=list(dict.keys())[0] 
    return answer

 

 

=> 해시 이용!

def solution(participant, completion):
    answer = ''
    temp = 0
    dic = {}
    for part in participant:
        dic[hash(part)] = part
        temp += int(hash(part))
    for com in completion:
        temp -= hash(com)
    answer = dic[temp]
    return answer

댓글