일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 부등호
- 코딩테스트
- 스택/큐
- 가독성
- 매직 넘버
- ZIP
- 탈출 조건
- max-heap
- John Sonmez
- 임시 변수
- deque
- 2020 채용
- 함수화
- 변수명
- enumerate
- 중첩
- 중첩문
- 파이썬
- 대소 비교
- min heap
- 커리어
- 조합
- 힙
- 중간 변수
- boolean
- 프로그래머스
- 가이드
- 그리디
- 함수
- permutations
- 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
도움이 됐다면 공감버튼을 눌러주세요! 질문이 있다면 댓글 달아주세요!
코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 partic
programmers.co.kr
'Coding Test > Programmers' 카테고리의 다른 글
탑 - 프로그래머스 - 파이썬 풀이 (0) | 2019.07.26 |
---|---|
프린터 - 프로그래머스 - 파이썬 풀이 (0) | 2019.07.24 |
베스트앨범 - 프로그래머스 - 파이썬 풀이 (0) | 2019.07.22 |
위장 - 프로그래머스 - 파이썬 풀이 (0) | 2019.07.20 |
전화번호 목록 - 프로그래머스 - 파이썬 풀이 (0) | 2019.07.17 |