def solution(participant, completion):
answer = ''
dic = {}
for i in participant:
if i in dic:
dic[i] += 1
else:
dic[i] = 1
for j in completion:
if j in dic:
dic[j] -= 1
for i, j in dic.items():
if j == 1:
answer = i
return answer
효율성 따지지 않고 마구잡이로 푼 방식..
dictionary의 카운트 방식을 통해 마지막 남은 1명을 잡아내는 방식이다.
다른 사람들의 방식을 몇가지 알아보자면
1. 정렬을 통한 방식
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
if participant[i] != completion[i]:
return participant[i]
return participant[len(participant)-1]
정렬을 통해 각 주자들의 순서를 통일시키고 순서대로 순회 할 때, 선수의 이름이 매칭이 안되면 그 주자를 뽑아내는 방식.
for 문을 완주자의 길이만큼만 돌기 때문에 끝까지 돌았을 때 조건문에 걸리지 않으면 주자의 마지막 사람을 return.
2. Counter 함수를 사용한 풀이
import collections
def solution(participant, completion):
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]
Counter함수를 이용 한 풀이. 신박했던 점은 객체간의 빼기가 가능하다는 점.
파이썬 모듈들에 대해 다시 공부를 해야 할 것 같다.
'Programmers' 카테고리의 다른 글
[Programmers / Python 풀이] 전화번호 목록 (0) | 2023.01.04 |
---|---|
[Programmers / Python 풀이] 폰켓몬 (0) | 2023.01.03 |
[Programmers / Python 풀이] 주식가격 (0) | 2023.01.03 |
[Programmers / Python 풀이] 다리를 지나는 트럭 (0) | 2023.01.03 |
[Programmers / Python 풀이] 기능개발 (0) | 2023.01.02 |