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

코린이·2022년 5월 22일
0

프로그래머스

목록 보기
3/22

📢 완주하지 못한 선수 문제

프로그래머스 문제 링크

💻 풀이

사용 언어 : python

1. for문과 if문 사용

for문을 사용하여 completion의 요소가 participant에 있을 경우 그 요소를 participant에서 삭제하여 남은 요소를 return 한다.
정확성 테스트는 통과! 하지만 효율성 테스트는 시간초과가 떴다 ㅠㅠ

import collections

def solution(participant, completion):
    for x in completion:
        if x in participant:
            participant.remove(x)
    return participant[0]

2. sort 사용

sort로 정렬을 한 후 같은 인덱스 값 끼리 비교한다.
index 값이 다르면 participant[x]가 정답이고, 없다면 participant의 마지막 인덱스에 완주하지 못한 선수가 있다는 의미로 participant[-1]이 정답이다.

def solution(participant, completion):
    participant.sort()
    completion.sort()

    for x in range(len(completion)):
        if participant[x] != completion[x]:
            return participant[x]

    return participant[-1]

3. zip 사용

zip()은 파이썬 내장 함수로 동일한 개수로 이루어진 자료형을 묶어주는 역할을 하는 함수이다.
zip() 함수 참고 사이트

def solution(participant, completion):
    participant.sort()
    completion.sort()
    for x, y in zip(participant, completion):
        if x != y:
            return x
    return participant[-1]

4. 콜렉션 모듈 사용

collections 모듈 사용
Counter은 해시 가능한 객체를 세는 데 사용하는 딕셔너리 서브 클래스이다.
dictionary 같이 {key: value} 형식으로 만들어진다.
뺄셈 연산을 지원한다.
collections 모듈 더 알아보기

import collections

def solution(participant, completion):
    answer = collections.Counter(participant) - collections.Counter(completion)
    return list(answer.keys())[0]
profile
초보 개발자

0개의 댓글