[프로그래머스/Python] 완주하지 못한 선수

daily_study_78·2022년 1월 4일
0

알고리즘

목록 보기
10/11

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/42576


문제


해결 과정

[ 1번 과정 ]

  • sort를 이용해 정렬한 후, completion의 갯수만큼 돌면서 participant와 completion을 비교
    (participant기준으로 for문을 돌면 participant의 마지막 값이 완주하지 못한 선수라면 indexError 발생)
  • 비교 후, 그때의 participant를 return
  • completion의 끝까지 갔는데 모두 동일하다면, participant의 마지막 선수를 return
def solution(participant, completion):
    participant = sorted(participant)
    completion = sorted(completion)

    for i in range(len(completion)):
        if participant[i] != completion[i]:
            return participant[i]

    return participant[-1]

[ 2번 과정 ]

  • participant를 temp라는 dictionary에 key-value값으로 넣음. 만약 이름이 중복되면 숫자를 키움
  • completion에 나온 경우를 temp에서 제거
  • 마지막에 남아있는 선수의 key값을 가지고옴
def solution(participant, completion):
    temp = {}
    for i in participant:
        if i not in temp:
            temp[i] = 1
        else:
            temp[i] += 1

    for i in completion:
        if i in temp:
            if temp[i] >= 2:
                temp[i] -= 1
            else:
                temp.pop(i)

    for t in temp:
        return t


배운 것

  • sort보다 dictionary에서 pop하는 것이 시간이 빠름

0개의 댓글

관련 채용 정보