728x90
📌 완주하지 못한 선수
count
를 이용해서 풀려고 했지만, 정확도가 100% 나오지 않아 완벽하게 풀지 못했다.
4가지 풀이 방법이 있다.
- Counter
- Hash
- range(len())
- zip()
첫번째로 Counter
모듈을 선언해서 풀 수 있는데, Counter
끼리는 더하거나 뺄 수 있다. 이번문제를 풀면서 처음 보는데 되게 유용한것 같다. 단 1줄로 답을 제출 할 수 있다 (WOW)
# Counter
from collections import Counter
def solution(participant, completion):
return str(*(Counter(participant) - Counter(completion)))
두번째는 Hash
값을 이용하는건데, 제한사항에 completion의 길이는 participant의 길이보다 1 작습니다.
처럼, 값이 무조건 1개가 나오기때문에 temp
에 hash
값을 누적해주고, 참가자 hash
값을 빼주면 결과적으로 남는 hash
값에 키를 붙여주면 누군지 알 수 있다.
# Hash
def solution(participant, completion):
hash_dic = {}
temp = 0
for part in participant:
hash_dic[hash(part)] = part
temp += hash(part)
for com in completion:
temp -= hash(com)
return hash_dic[temp]
세번째와 네번째는 푸는 방법이 비슷한데, 정렬해서 index
를 하나씩 비교하다 다른 값이면 출력, 끝까지 돌았는데도 다른 값을 찾지 못했다면 participant[-1]
을 출력하는 방법이다.
# range(len())
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(participant) -1):
if participant[i] != completion[i]:
return participant[i]
return participant[-1]
반응형
'Algorithm > 프로그래머스(Programmers)' 카테고리의 다른 글
[ 파이썬(python) ] 프로그래머스 level2 - 전화번호 목록 (0) | 2021.03.31 |
---|---|
[ 파이썬(python) ] 프로그래머스 level1 - 두 정수 사이의 합 (0) | 2021.03.31 |
[ 파이썬(python) ] 프로그래머스 level1 - 소수판별 (0) | 2021.03.31 |
[ 파이썬(python) ] 프로그래머스 level1 - 문자열 다루기 기본 (0) | 2021.03.31 |
[ 파이썬(python) ] 프로그래머스 level1 - 문자열 내 p와 y의 개수 (0) | 2021.03.31 |
댓글