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
'개발 > 프로그래머스' 카테고리의 다른 글
프로그래머스 해시 level2 전회번호 목록 (0) | 2020.09.02 |
---|---|
프로그래머스 해시 level1 완주하지 못한 선수- collections 모듈의 Counter 함수 (0) | 2020.09.02 |
프로그래머스 level1 나누어 떨어지는 숫자 배열 (0) | 2020.08.31 |
댓글