코딩공부/프로그래머스 (python)
[프로그래머스] 완주하지 못한 선수 (python)
CodingKwon
2021. 7. 16. 12:05
문제 링크 (Level 1)
https://programmers.co.kr/learn/courses/30/lessons/42576
코딩테스트 연습 - 완주하지 못한 선수
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수
programmers.co.kr
나의 코드 (python)
첫 번째 코드 (정확성 테스트는 통과, 효율성 테스트 실패 : 시간 초과)
def solution(participant, completion):
answer = ''
for i in completion:
for j in participant:
if i == j:
participant.remove(i)
break
answer = participant.pop()
return answer
두 번째 코드 (통과)
def solution(participant, completion):
participant.sort()
completion.sort()
for i, j in zip(participant, completion):
if i != j:
return i
return participant[-1]
먼저 두 값을 정렬하고 zip으로 묶어서 비교합니다. 다른 것이 있다면 이는 완주하지 못한 선수일 것입니다. 이유는 두 배열이 정렬되어 있기 때문에 같은 값이 나오지 않는다면 participant에만 있는 값이기 때문입니다.
하지만 두 값을 비교했을 때 완주하지 못한 선수를 검증하지 못했다면 배열의 크기가 1 더 큰 participant의 마지막 인덱스에 위치한 선수가 완주하지 못한 선수일 것입니다.