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
- 백준12904
- Smart Commit
- 완주하지 못한 선수
- 코딩테스트
- 124 나라의 숫자
- 백준1697
- 인구 이동
- 백준3190
- 백준
- 백준16234
- 움직이는 미로 탈출
- 부스트캠프
- 경비원
- A와 B
- 백준2573
- 백준1788
- 단어 수학
- 백준1339
- 파이썬
- 키패드 누르기
- 백준 2564
- 소수 만들기
- 전기 요금
- 프로그래머스
- 백준 14499
- 빙산
- 백준16954
- 피보나치 수의 확장
- 백준5710
- 로또의 최고 순위와 최저 순위
Archives
- Today
- Total
Today.dev
[PG_42576/Python] 완주하지 못한 선수 본문
문제
풀이
participant, completion 배열을 정렬하고 두 배열의 값이 어긋나는 순간에서 정답을 찾는다.
예를 들어 participant = [1, 2, 3, 3, 5], completion = [1, 2, 3, 5] 인 경우를 보자.
1 | 2 | 3 | 3 | 5 |
1 | 2 | 3 | 5 |
(1, 1), (2, 2), (3, 3)과 같이 계속 값이 일치하다 (3, 5) 처럼 값이 어긋나게 되면 그때의 participant 값이 정답이다.
하지만 예외 케이스도 있다. participant = [1, 2, 3, 3, 5], completion = [1, 2, 3, 3] 을 보자.
1 | 2 | 3 | 3 | 5 |
1 | 2 | 3 | 3 |
반복문이 종료될 때까지 어긋난 순간이 발견되지 않는다. 그때는 participant 의 가장 마지막 값이 정답이므로 그것을 return 해준다.
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
if participant[i] != completion[i]:
return participant[i]
return participant[-1]
개선한 풀이
collections 모듈의 Counter 클래스를 이용
딕셔너리 자료구조를 확장하는 Counter 클래스는 원소의 개수를 셀 때 유용하게 사용할 수 있다. 또한 원래 딕셔너리 자료형은 집합 연산이 불가능하지만 Counter 클래스는 집합 연산이 가능하다.
from collections import Counter
def solution(participant, completion):
answer = Counter(participant) - Counter(completion)
return ''.join(answer)
풀이 참고
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[PG_42746/Python] 가장 큰 수 (0) | 2021.07.03 |
---|---|
[PG_12899/Python] 124 나라의 숫자 (0) | 2021.07.03 |
[PG_67256/Python] 키패드 누르기 (0) | 2021.06.22 |
[PG_77484/Python] 로또의 최고 순위와 최저 순위 (0) | 2021.06.22 |
[PG_12977/Python] 소수 만들기 (0) | 2021.06.22 |
Comments