Algorithm

[프로그래머스] 완주하지 못한 선수 - 파이썬

potato_pizza 2024. 5. 8. 15:59
728x90

Programmers

완주하지 못한 선수

https://school.programmers.co.kr/learn/courses/30/lessons/42576

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제

코드

sort를 활용한 풀이

  • 둘 다 정렬해서 다른 경우 해당 값을 return, 끝까지 다른게 없다면 마지막 선수가 완주하지 못함
def solution(participant, completion):
    participant.sort()
    completion.sort()

    for i in range (0,len(completion)):
        if participant[i] != completion[i]:
            return participant[i]

    return participant[-1]

 

Counter를 활용한 풀이

  • 완주를 못한 인원은 1명이기 때문에, 완주자에서 참가자를 빼서 얻은 딕셔너리의 0번째 key 값을 return
from collections import Counter

def solution(participant, completion):

    answer = Counter(participant) - Counter(completion)

    return list(answer.keys())[0]

 

Hash를 활용한 풀이

  • 선수들의 이름의 hash값을 key로, 선수 이름은 value로 하는 딕셔너리 생성
  • 완주한 선수들의 이름을 for문을 돌리면서 완주한 선수들의 이름의 해시값들 빼줌
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
728x90
반응형