프로그래머스>해시>'완주하지 못한 선수' 를 풀었다.

 

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

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

programmers.co.kr

 

얼마전 비슷한 문제를 풀어서 어렵지 않게 풀 수 있었다. (해쉬는 파이썬 딕셔너리가 짱짱인듯..)

 

비슷한 문제 : [해커랭크] Hash Table : Ransom Note 가 있다. (같은 접근으로 풀이 가능)

 

Hash Tables : Ransom Note (Python)

Hash Tables: Ransom Note | HackerRank Given two sets of dictionaries, tell if one of them is a subset of the other. www.hackerrank.com 오랜만에 해커랭크에서 문제를 풀었다. 고새 파이썬 딕셔너리 사용..

rokroks.tistory.com

 

 


 

 

Solution

def solution(p,c):
    dic={}
    res=''
    for x in p:
        if x not in dic:
            dic[x]=1
        else:
            dic[x]+=1

    for x in c:
        if x in dic:
            dic[x]-=1
    
    for x in dic:
        if dic[x]>0: res=x
            
    return res  

1) 딕셔너리에 '참가자 이름 : 동명이인 수'로 저장

2) 완주자 이름(딕셔너리 key) 존재 시 value 감소  

3) 딕셔너리 0 초과 값인 key 출력 (완주하지 않은 경우)

 

 

깰끔

 

 

 


 

 

 

다른 사람의 파이썬 풀이 중에 흥미로운 라이브러리가 있어서 가져와봤다.

(참고 : wooaoe.tistory.com/71)

 

import collections as coll
def solution(p,c):
    p.sort()
    c.sort()
    result=coll.Counter(p)-coll.Counter(c)
    return list(result)[0]

collections 라이브러리의 Counter,, 차집합 개념으로 구현된 코드이다.

역시 파이썬은 최강이다..

 

 

반응형

+ Recent posts