[Py_Lv1] 완주하지 못한 선수
- 문제 설명
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
- 제한 사항
- 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
- completion의 길이는 participant의 길이보다 1 작습니다.
- 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
- 참가자 중에는 동명이인이 있을 수 있습니다.
- 입출력 예
- 접근법
적어도 하루에 1개의 알고리즘을 풀기위한 여정은 주말도 계속되고 있습니다.
이 문제는 if문에 not in을 이용해 쉽게 해결하는줄 알았으나 동명이인이 나타나
당황스러운 상황을 연출해주었습니다.
수 차례 도전으로 not in으로는 해결할 수 없는것으로 판단하여 list에 사용할 수
여러 함수들을 찾아보다가 zip이라는 함수를 알게되었습니다.
일단 두 리스트의 값을 인덱스를 기준으로 붙여주기 때문에 문제로 주어진 두 리스트에
적용해 보았습니다.
그리고 2가지 특징을 찾을 수 있었습니다.
한가지는 중간에 다른 값이 나오면 비교값인 i를 출력해주면 된다는 사실이고
두번째는 미 완주자의 이름이 끝에 나오는 경우 zip 함수의 특성상 짝이 없는 값은
버리기 때문에 i의 마지막 인덱스 값을 출력해주면 된다는 사실이었습니다.
다행이 아래와 같은 코드를 만들어 해결하였습니다.
오늘은 조금 일찍 잘 수 있을 것 같습니다. 🤣
=============================================================
def solution(participant, completion):
participant.sort()
completion.sort()
for i, j in zip(participant, completion):
if i != j:
return i
return participant[-1]
Author And Source
이 문제에 관하여([Py_Lv1] 완주하지 못한 선수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ysh/PyLv1-완주하지-못한-선수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)