문제출처: https://programmers.co.kr/learn/courses/30/lessons/42576
접근법
처음에 단순히 participant가 completion 배열에 있는지 in 연산자를 통해 소거하는 방식으로 푸니 효율성 문제들을 통과하지 못했다.
그래서 participant , completion 배열들을 각각 정렬을 한 뒤 index 0부터 두 배열을 비교하여 같다면 완주를 한 선수이고 다르다면 완주하지 못한 선수가 될 것이라고 생각하여 풀었다.
코드
def solution(participant, completion): answer = '' participant.sort() completion.sort() for i in range(len(completion)): if( participant[i] != completion[i] ): answer = participant[i] break if( answer == '' ): answer = participant[-1] return answer
- 해시를 활용한 코드
def solution(participant, completion): answer = '' d = {} tmp = 0 for p in participant: tmp += hash(p) d[hash(p)] = p for c in completion: tmp -= hash(c) return d[tmp]