programmers.co.kr/learn/courses/30/lessons/42576
participant 배열에는 마라톤에 참여한 선수들이, completion 배열에는 완주한 선수들이 담겨져 있다. 이 두가지 배열을 비교하여 완주하지 못한 선수를 출력해야하는 문제였다.
[첫번째 시도]
def solution(participant, completion):
for i in completion:
if i in participant:
participant.remove(i)
answer = ','.join(participant)
return answer
이렇게 하니.. 정확성 테스트는 다 통과했지만 효율성 테스트를 하나도 통과하지 못했다..(하하핳...) 그래서 생각한게 어차피 하나만 출력하면 되니 비교하자마자 결과값을 출력하려고 했다.
[두번째 시도!]
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(completion)]
participant 와 completion의 길이는 1개 차이인 점, 그리고 정렬을 하면 바로 비교가 가능하다는 점을 이용하여 풀었다. 다행히 효율성과 정확성 모두 통과를 하였다
[추가 풀이]
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(participant)):
if participant[i] != completion[i]:
return participant[i]
구글로 다른 사람들의 코드를 확인해보려 했는데 비교 한 후 바로 return을 해주는 코드를 짠 분을 봤다. 그래서 오! 이것도 되는 구나 하고 돌려봤는데... (코드 실행)했을 때는 3개의 테스트 중 1개만 통과를 하였고 (제출 후 채점하기)를 했을 때는 정확도, 효율성 모두 통과를 하였다.. 으음.. 그래서 일단 이렇게도 가능한 것만 확인하고 패스!
[추가 풀이]
from collections import Counter
def solution(participant, completion):
answer = Counter(participant) - Counter(completion)
return list(answer.keys())[0]
와.... Counter라는 것을 알지 못했었는데 이렇게 하니 효율성에서도 월등히 좋은 결과를 보여줬다. 이번 기회에 Counter에 대해서도 알게되어 아주 좋았다!!!!
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 나누어 떨어지는 숫자 배열(Python) (0) | 2021.03.06 |
---|---|
프로그래머스 : K번째수(Python) (0) | 2021.03.01 |
프로그래머스 : 서울에서 김서방 찾기(Python) (0) | 2021.03.01 |
프로그래머스 : 두 정수 사이의 합(Python) (0) | 2021.03.01 |
프로그래머스 : 두 개 뽑아서 더하기(Python) (0) | 2021.02.26 |