[Python3]프로그래머스_완주하지 못한 선수

Beanzinu·2022년 1월 26일

코딩테스트

목록 보기
8/42

문제출처: https://programmers.co.kr/learn/courses/30/lessons/42576

접근법

처음에 단순히 participant가 completion 배열에 있는지 in 연산자를 통해 소거하는 방식으로 푸니 효율성 문제들을 통과하지 못했다.
그래서 participant , completion 배열들을 각각 정렬을 한 뒤 index 0부터 두 배열을 비교하여 같다면 완주를 한 선수이고 다르다면 완주하지 못한 선수가 될 것이라고 생각하여 풀었다.

  • participant의 해시값을 활용하여 completion에 없는 해시 값의 dict value를 구하는 코드도 있다.

코드

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]
profile
당신을 한 줄로 소개해보세요.

0개의 댓글