알고리즘/프로그래머스문제풀이

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

개발자 덕구🐾 2022. 6. 14. 19:36
728x90

 

 

 

 

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

 

코딩테스트 연습 - 완주하지 못한 선수

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

programmers.co.kr

 

 

 


 

 

백준에도 동일한 문제가 있을것이다.

풀었던 기억이 있다. 

근데 이번에는 못풀었다...

 

 

 

 

 

코드 <Counter 사용>  : 

 

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

 

return 하는 곳에서 list(ans)[0]을 해도 정답이다.

 

 

 

participant - completion을 빼고 완주하지 못한 선수만 남긴다.  

그냥 answer만 출력

 

 

answer.keys()를 출력

 

 

여기서 [0]을 하면 에러가 발생한다. dict의 key모음이기 때문이다.

list()를 통해 list화 해준 후 [0]을 하면 잘 출력된다.

 

 

 

 

 

코드 < dict 사용 > :

 

def solution(participant, completion):
    part = {}
    for par in participant :
        if par in part :
            part[par]+=1
        else :
            part[par]=1
    for com in completion :
        if com in part :
            part[com]-=1
    for k,v in part.items() :
        if v == 1 :
            return k

 

 

 

 

 

 

 

 

배운점 : 

 

1. collections의 Counter 

 

 

 

counter에 리스트를 넣으면 알아서 이렇게 들어간다.

유용하다.

 

 

 

 

 

 


 

 

 

 

참고 블로그 :

 

https://velog.io/@eerang/PYTHON-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4Level1-%EC%99%84%EC%A3%BC%ED%95%98%EC%A7%80-%EB%AA%BB%ED%95%9C-%EC%84%A0%EC%88%98

 

[PYTHON-프로그래머스][Level1]-완주하지 못한 선수

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

velog.io

 

 

복습 : 

 

20220623

✅ 20220626

  20220630

 

반응형