본문 바로가기
Algorithm/프로그래머스

Lv1 완주하지 못한 선수

by IT learning 2021. 6. 17.
728x90

 

문제 설명

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.

마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.

제한사항

  • 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
  • completion의 길이는 participant의 길이보다 1 작습니다.
  • 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
  • 참가자 중에는 동명이인이 있을 수 있습니다.

풀이 방법

Lv1 문제답게 조금만 생각하면 풀 수 있는 문제였다.

 

일단 참여한 선수가 담긴 participant와 완주한 선수가 담긴 compleiton의 차이가 1밖에 나지 않는다고 했다. 그걸 미루어 보았을때,

둘이 정렬을 해주게 될 경우 같은 것 끼리 정렬이 될 것이다.

그 중에 완주를 못했다면, 분명히 하나가 튈 것이다.  그걸 염두해 두고 문제를 풀면 된다.

 

코드

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]

정렬을 하고, 중간에 완주하지 못한 선수가 있을 수 있으니, for문을 돌려 확인. 그게 아니면 마지막꺼 출력 해주면 된다.

 

728x90

'Algorithm > 프로그래머스' 카테고리의 다른 글

Lv1 신규 아이디 추천  (0) 2021.06.21
Lv1 폰켓몬  (0) 2021.06.21
Lv 2 주식가격  (0) 2021.06.18
Lv2 전화번호 목록  (0) 2021.06.17
2020 카카오 인턴 - 키패드 누르기  (0) 2021.05.05

댓글

IT_learning's Commit