프로그래머스>해시>'완주하지 못한 선수' 를 풀었다.
얼마전 비슷한 문제를 풀어서 어렵지 않게 풀 수 있었다. (해쉬는 파이썬 딕셔너리가 짱짱인듯..)
비슷한 문제 : [해커랭크] Hash Table : Ransom Note 가 있다. (같은 접근으로 풀이 가능)
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,, 차집합 개념으로 구현된 코드이다.
역시 파이썬은 최강이다..
반응형
'Problem Solving > Programmers' 카테고리의 다른 글
그리디 (Level 1) : 체육복 (Python, copy 라이브러리) (0) | 2021.05.17 |
---|---|
완전탐색 (Level 1) : 모의고사 (Python) (0) | 2021.05.10 |
정렬 (Level 1) : k번째 수 (Python) (0) | 2021.05.10 |
스택/큐 (Level 2) : 주식가격 (Python) (0) | 2021.05.09 |
DFS/BFS (Level 2) : 타겟 넘버 (Python) (0) | 2021.05.08 |