Better Code, Better Life

완주하지 못한 선수 - 프로그래머스 - 파이썬 풀이 본문

Coding Test/Programmers

완주하지 못한 선수 - 프로그래머스 - 파이썬 풀이

심재훈 2019. 7. 16. 19:50

문제 풀이

제한사항 중에서

1. 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.

2. completion의 길이는 participant의 길이보다 1 작습니다.

3. 참가자 중에는 동명이인이 있을 수 있습니다.

이 중요합니다.

 

Hash 자료 구조를 이용해 마라톤 선수들 숫자를 셉니다.

선수들의 숫자를 셀 때, 리스트 자료구조를 이용할 경우, 10만명이나 되기 때문에 접근 비용이 매우 큽니다.

그래서 Hash 자료 구조를 이용해야 풀리는 문제입니다.

 

숫자를 센 이후, 둘을 비교해 차이가 1인 선수를 찾습니다.

 

파이썬에서 Hash 자료 구조는 내부 자료형인 dict를 이용하면 됩니다.

Collections에 있는 Counter는 더 편리하게 리스트내 자료들을 셀 수 있습니다.

아래 설명 참조하면 Hash 구조를 사용함을 알 수 있습니다.

A Counter is a dict subclass for counting hashable objects.

해답 코드

from collections import Counter

def solution(participant, completion):
    participant_counter = Counter(participant)
    completion_counter = Counter(completion)
    diff = participant_counter - completion_counter
    answer = list(diff)[0]
    return answer

 

도움이 됐다면 공감버튼을 눌러주세요! 질문이 있다면 댓글 달아주세요!

 

문제 링크

 

코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 partic

programmers.co.kr

Comments