문제 링크 >> https://programmers.co.kr/learn/courses/30/lessons/42576?language=python3
📋 문제
수많은 마라톤 선수들이 마라톤에 참여하였습니다.
단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.
👉 입력
- 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
- completion의 길이는 participant의 길이보다 1 작습니다.
- 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
- 참가자 중에는 동명이인이 있을 수 있습니다.
👈 출력
📝 풀이
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
if participant[i] != completion[i]:
return participant[i]
return participant[-1]
단순하게 참여자들 중 완주를 하지 못한 단 한 명의 선수만을 골라내는 문제였다.
따라서 입력으로 주어진 participant와 completion을 둘 다 sort() 메서드를 사용해 정렬해 주었다.
그리고 completion의 배열 길이만큼 반복문을 돌며 동일한 인덱스에 같은 이름이 들어있는지 확인했다.
배열의 중간에 if문이 걸릴 때는 해당하는 이름이 출력되도록 바로 return시켜 주었으나 if문에 걸리지 않을 경우는 정렬된 participant의 제일 마지막 값이 완주하지 못한 사람일 때이다.
그러니 return된 값이 없이 for문이 끝났다면 participant 배열의 제일 끝 값을 return시켜 주었다.
'Algorithm > Python' 카테고리의 다른 글
[LeetCode] Two Sum (0) | 2022.01.25 |
---|---|
[프로그래머스] 베스트 앨범 (0) | 2022.01.25 |
[프로그래머스] 위장 (0) | 2022.01.24 |
[프로그래머스] 전화번호 목록 (0) | 2022.01.24 |
[문자열탐색] 문자열 압축 (0) | 2021.12.10 |
댓글