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
반응형