알고리즘/프로그래머스

[Level1]완주하지 못한 선수

야챔 2021. 4. 5. 17:11

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

 

 

1. 

participant = 	["mislav", "stanko", "mislav", "ana"]
completion = ["stanko", "ana", "mislav"]

def solution(participant, completion):
    for i in participant:
        if i not in completion:
            print(i)
            return i
        else:
            completion.remove(i)

답은 맞지만 효율성테스트에서 시간초과 떠버림

 

리스트 삭제는 n이란다.. 

 

 

 

2. 

import collections

def solution(participant, completion):

    answer=collections.Counter(participant)-collections.Counter(completion)

    return list(answer)[0]

찾아보니 collections 라는 모듈이 있다.

collections.Counter() 를 사용하였다. Counter는 해시 가능한  객체를 세는데 사용하는 딕셔너리 서브 클레스이다.

 

list가 participant = ["mislav", "stanko", "mislav", "ana"] 있다고 할 때

collections.Counter(participant)를 하면 Counter({'mislav': 2, 'stanko': 1, 'ana': 1}) 가 된다.

 

다른 completion = ["stanko", "ana", "mislav"] 로 collections.Counter(completion)를 하면

Counter({'mislav': 1, 'stanko': 1, 'ana': 1}) 이 되는데 이 둘을 빼주면 Counter({'mislav': 1}) 가 된다.

 

mislav 라는 값만 나타내기 위해 list() 로 만들어 주었고 [0]을하여 mislav만 출력되게 하였다.