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

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

 

 

입출력 예

participantcompletionreturn

["leo", "kiki", "eden"] ["eden", "kiki"] "leo"
["marina", "josipa", "nikola", "vinko", "filipa"] ["josipa", "filipa", "marina", "nikola"] "vinko"
["mislav", "stanko", "mislav", "ana"] ["stanko", "ana", "mislav"] "mislav"

 

 

 

def solution(participant, completion):
    participant.sort()
    completion.sort()
    num = len(completion)
    
    for idx in range(num):
        if participant[idx] != completion[idx]:
            return participant[idx]
    return participant[num]

처음에는 루프문을 돌려서 참가자 명단에 있는 요소를 완주자 리스트에서 뒤져보려고 했으나 분명 효율성이 똥일 될 것같았다. 시간 초과도 있으니...

sort함수를 이용해서 알파벳 순으로 배열을 하면 for문을 돌릴 때 시간이 단축되는 것을 힌트 삼아 쓰게 되었다.

(사실 쓰다보니 간결해져서 다른분의 풀이를 배낀 느낌..?)

 

return을 한번만 하니까 리스트 제일 마지막에 있는 선수는 찾지 못하길래 맨 마지막에 있는 선수를 못찾아서 return을 두번 쓰게 되었다리.

'Algorithm' 카테고리의 다른 글

programmers #예산  (0) 2021.08.07
programmers #2016년  (0) 2021.08.06
programmers #모의고사  (0) 2021.07.29
programmers #K번째수  (0) 2021.07.22
programmers #하샤드 수  (0) 2021.07.22

+ Recent posts