완주하지 못한 선수
문제
- 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
- 입력
- participant: 마라톤에 참여한 선수들의 이름이 담긴 배열
- completion: 완주한 선수들의 이름이 담긴 배열
- 출력
- 완주하지 못한 선수의 이름을 return 하도록 solution 함수
제한사항
- 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
- completion의 길이는 participant의 길이보다 1 작습니다.
- 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
- 참가자 중에는 동명이인이 있을 수 있습니다.
예시
participant | completion | return |
["leo", "kiki", "eden"] | ["eden", "kiki"] | "leo" |
["marina", "josipa", "nikola", "vinko", "filipa"] | ["josipa", "filipa", "marina", "nikola"] | "vinko" |
["mislav", "stanko", "mislav", "ana"] | ["stanko", "ana", "mislav"] | "mislav" |
예시 설명
- 예제 #1
- "leo"는 참여자 명단에는 있지만, 완주자 명단에는 없기 때문에 완주하지 못했습니다.
- 예제 #2
- "vinko"는 참여자 명단에는 있지만, 완주자 명단에는 없기 때문에 완주하지 못했습니다.
- 예제 #3
- "mislav"는 참여자 명단에는 두 명이 있지만, 완주자 명단에는 한 명밖에 없기 때문에 한명은 완주하지 못했습니다.
구현 아이디어
- 문제에서 참여자와 완주자 명단을 이용해서 완주하지 못한 1인 찾기
- 동명이인 고려 ⇒ 자료구조를 dict으로 key : 이름, value : 인원 수
- 해당 자료구조로 참여 인원 증가, 완주 인원 차감
- 결과출력에서 value가 1인 참여자 이름을 반환
코드
from collections import defaultdict
def solution(participant, completion):
# 1. participant 관련 counter 딕션너리 정의
counter = defaultdict(int)
for p in participant:
counter[p] += 1
# 2. completion 선수들을 조회하면서 counter 카운터 차감
for p in completion:
counter[p] -= 1
# 3. 결과 출력
answerd = [str(k) for k, v in counter.items() if v == 1]
return answerd[0]
문법 정리
- defaultdict(default_factory=None)
- 새로운 사전 객체를 반환하
- default_factory : 속성의 초기 값, 기본값은 None
class collections.defaultdict(default_factory=None /[, ...])
- 예제 1. List
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
d[k].append(v)
sorted(d.items())
>>> [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
- 예제 2. 문자열
s = 'mississippi'
d = defaultdict(int)
for k in s:
d[k] += 1
sorted(d.items())
>>> [('i', 4), ('m', 1), ('p', 2), ('s', 4)]
- 예제 3. Set
s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
d = defaultdict(set)
for k, vin s:
d[k].add(v)
sorted(d.items())
>>> [('blue', {2, 4}), ('red', {1, 3})]
'Programmers > Solution' 카테고리의 다른 글
[프로그래머스] 해시 > 위장 (0) | 2022.01.12 |
---|---|
[프로그래머스] 해시 > 전화번호 목록 (0) | 2022.01.12 |
[프로그래머스] GROUP BY > 입양 시각 구하기(2) (0) | 2022.01.04 |
[프로그래머스] SELECT > 아픈 동물 찾기 (0) | 2022.01.04 |
[프로그래머스] String, Date > 오래 기간 보호한 동물(2) (0) | 2022.01.04 |
댓글