[Programmers] 완주하지 못한 선수

가영·2021년 11월 28일
0

알고리즘

목록 보기
40/41

정말 오랜만에 문제를 하나 풀었다! 안 그래도 문제 열심히 풀었을 때 만큼 파이선을 기억하지 못하기도 하고, 푸는 방법을 잊어서 제일 앞에 있는 문제를 도전했다.

쉬운 문제라고 하지만 오랜만에 문제를 풀려고 하니 헷갈린 것도 있었고 배운 것도 많았다~ 정리 한 번 해보려고 한다.

문제 설명

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

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

이렇게 생겼었다.

제한 사항

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

입출력 예시

제출한 코드

def solution(participant, completion):
    cDict = dict() # 딕셔너리 만듦.
    for c in completion:
        if c not in cDict: # null이면 만들기
            cDict[c] = 1
        else:
            cDict[c] += 1
    for p in participant:
        if p not in cDict or cDict[p] <= 0:
            return p
        else:
            pDict[p] -= 1

배운 점

  • 파이썬에서 해시를 어떻게 해야할지 오랜만에 생각해봤다

    딕셔너리를 사용해서 해시 문제를 풀 수 있었다.

  • 와, 지금 검색하면서 알았는데 딕셔너리 키 검색에서 in을 쓰기가 싫었지만 방법이 기억이 안나서 in을 사용했는데 get() 메서드 사용보다 시간복잡도가 컸다.

    얼른 수정해서 다시 해봐야징

    고쳤다링

0개의 댓글