Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 조합
- max-heap
- 그리디
- 임시 변수
- 함수화
- John Sonmez
- 프로그래머스
- 가이드
- 파이썬
- 변수명
- 중간 변수
- 스택/큐
- enumerate
- 2020 채용
- 커리어
- boolean
- 대소 비교
- 가독성
- 매직 넘버
- 중첩
- 코딩테스트
- deque
- 힙
- min heap
- 탈출 조건
- 함수
- ZIP
- permutations
- 중첩문
- 부등호
Archives
- Today
- Total
Better Code, Better Life
완주하지 못한 선수 - 프로그래머스 - 파이썬 풀이 본문
문제 풀이
제한사항 중에서
1. 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.
2. completion의 길이는 participant의 길이보다 1 작습니다.
3. 참가자 중에는 동명이인이 있을 수 있습니다.
이 중요합니다.
Hash 자료 구조를 이용해 마라톤 선수들 숫자를 셉니다.
선수들의 숫자를 셀 때, 리스트 자료구조를 이용할 경우, 10만명이나 되기 때문에 접근 비용이 매우 큽니다.
그래서 Hash 자료 구조를 이용해야 풀리는 문제입니다.
숫자를 센 이후, 둘을 비교해 차이가 1인 선수를 찾습니다.
파이썬에서 Hash 자료 구조는 내부 자료형인 dict를 이용하면 됩니다.
Collections에 있는 Counter는 더 편리하게 리스트내 자료들을 셀 수 있습니다.
아래 설명 참조하면 Hash 구조를 사용함을 알 수 있습니다.
A Counter is a dict subclass for counting hashable objects.
해답 코드
from collections import Counter
def solution(participant, completion):
participant_counter = Counter(participant)
completion_counter = Counter(completion)
diff = participant_counter - completion_counter
answer = list(diff)[0]
return answer
도움이 됐다면 공감버튼을 눌러주세요! 질문이 있다면 댓글 달아주세요!
'Coding Test > Programmers' 카테고리의 다른 글
탑 - 프로그래머스 - 파이썬 풀이 (0) | 2019.07.26 |
---|---|
프린터 - 프로그래머스 - 파이썬 풀이 (0) | 2019.07.24 |
베스트앨범 - 프로그래머스 - 파이썬 풀이 (0) | 2019.07.22 |
위장 - 프로그래머스 - 파이썬 풀이 (0) | 2019.07.20 |
전화번호 목록 - 프로그래머스 - 파이썬 풀이 (0) | 2019.07.17 |
Comments