취준/프로그래머스
[프로그래머스 Programmers][Python] 완주하지 못한 선수
puff
2020. 1. 20. 20:45
문제 : https://programmers.co.kr/learn/courses/30/lessons/42576
이 문제는 기본적으로 dictionary, 해쉬맵을 쓰는데, participant 를 먼저 넣고 completion 을 빼는 방식으로 움직인다.
여기서 주의해야 할 조건은
- 참가자 중에는 동명이인이 있을 수 있습니다.
- 그래서 이름을 key로 쓸 경우 존재 유무만 하는게 아니라 같은 이름 수까지 세어줘야 함
이거 말고는 딱히 없다, defaultdict() 을 쓸경우 if-else 구문 없이 한방에 key없을시 기본값 1 로 해줄 수 있으나,
코딩테스트 할때 collections 를 잘 안쓸려고 하기 때문에 제외했다.
아 물론 순열조합은 무조건 collections 간다.
def solution(participant, completion):
d = dict()
for p in participant:
if p in d:
d[p] +=1
else:
d[p] = 1
for c in completion:
if d[c]==1:
d.pop(c)
else:
d[c]-=1
answer = ''
for k,_ in d.items():
answer = answer+k
return answer