728x90
처음 든 생각
- 두 개의 리스트를 비교해가면서 있는지 없는지를 확인하면 되겠다.
- 동명이인이 있을 수도 있다고 하네 그러면 동명이인의 수도 체크를 해서 진행해야 될까?
나의 답
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
a = participant.pop()
b = completion.pop()
if a != b :
return a
else:
continue
return participant.pop()
동명이인에 대한 부분을 어떻게 처리해줘야할지 살짝 고민했지만 리스트의 정렬로 해결할 수 있었다.
완주한 선수들의 리스트를 반복문으로 돌면서 하나씩 pop을 시켜준 뒤 비교해서 만약 같다면 그 선수는 완주한 것이다. 그러니깐 다른 경우일때만 처리를 해주면 되고 바로 return을 해준다. 왜냐하면 완주하지 못한 선수는 1명이기 때문에 차이나는 1명만 찾으면 그 뒤에는 굳이 코드가 동작할 필요가 없다.
만약 그렇게 한명씩 비교를 해주다가 completion 리스트가 비게 되면 participant는 한 명만 남을 것이다. 그럼 그 놈이 완주하지 못한 놈이 된다.
리스트에서 pop의 시간 복잡도는 상수이기 때문에 pop으로 소요시간을 줄이려 했다.
고려해야할 변수가 많은 문제는 아니여서 어렵지 않게 해결할 수 있었다.
728x90
'스터디 > 코딩테스트' 카테고리의 다른 글
python 코딩테스트 - 타겟 넘버 (0) | 2023.11.06 |
---|---|
python 코딩테스트 - 프로세스 (0) | 2023.11.05 |
python 코딩테스트 - DFS, BFS (4) | 2023.11.03 |
python 코딩테스트 - 체육복 (2) | 2023.11.02 |
python 코딩테스트 - 그리디, 구현 (3) | 2023.11.02 |