완주하지 못한 선수

TIL/python
https://hyunjungc-dev.github.io/2021/04/01/collections-%EB%AA%A8%EB%93%88%EC%9D%98-Counter-%ED%81%B4%EB%9E%98%EC%8A%A4/

이 문제의 경우, 프로그래머스의 다른 사람의 풀이를 보니 collections 모듈의 Counter()를 이용하면, 더 쉽게 풀 수 있었다.
collections 모듈의 Counter()는 잘 몰라서 위의 TIL/python 카테고리 안에 공부해서 정리했다.

Programmers level 1

완주하지 못한 선수

participant 배열과 completion 배열의 관계를 생각해야한다.

1. participant 배열과 completion 배열의 관계

  • participant에는 참여한 모든 선수들의 이름이 들어있고
  • completion에는 완주한 선수들의 이름이 들어가 있다.
  • 이때, 둘 배열의 길이차는 항상 1이다.

2. 완주 못한 선수는 항상 1명

  • 각 배열을 순서대로 정렬했을 때, 일치하지 않는 인덱스의 선수가 완주하지 못한 선수가 된다.

sort를 이용

1
2
3
4
5
6
7
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]

collection 모듈의 Counter()를 이용
프로그래머스 다른 사람의 풀이

1
2
3
4
import collections
def solution(participant, completion):
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]