본문 바로가기

Computer Science/알고리즘 문제풀이

[Programmers] #12 완주하지 못한 선수 [Python]

1. 문제 설명


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


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


2. 나의 코드


주어진 문자열을 정렬한다음 비교하면서 다르면 return한다.

만약 for문 중간에 다른 문자열이 나오지 않았다면, participant의 맨 마지막 요소를 return한다.

from operator import eq

def solution(participant, completion):
    answer = ''
    participant.sort()
    completion.sort()
    flag = True

    for i in range(len(completion)):
        if not eq(participant[i],completion[i]):
            answer = participant[i]
            flag = False
            break
    if flag:
        answer = participant[len(participant)-1]

    return answer


3. 다른 사람 코드


collection 모듈을 썼다.

import collections


def solution(participant, completion):
    answer = collections.Counter(participant) - collections.Counter(completion)
    return list(answer.keys())[0]


4. 보완


collection 모듈???


- 컨테이너에 들어있는 요소의 갯수를 파악하여 딕셔너리 형태로 반환해주는 객체이다.


- 리스트가 요소로 들어올 때는, 각 리스트가 가진 요소들의 빈도수를 가지고  딕셔너리를 만들어 return한다.


collection 모듈에 대해 좀 더 공부 해야겠다.


http://excelsior-cjh.tistory.com/94