언뜻보면 정말정말 간단한 줄 알고,
set - set 해서 하려 했으나(차집합),
동명이인을 해결하지 못했다.
이중포문을 쓰면 시간복잡도가 n^2이기 때문에,
시간이 초과됐다.
remove함수를 써도 시간이 초과됐다.
많은 방법으로 시도 했으나 효율성에서 0점을 맞았다.
한 40분정도 붙잡고 있었던거 같은데,
결국 아래와 같은 해답으로 해결!
def solution(participant, completion):
answer = ''
participant.sort()
completion.sort()
a = list(set(participant) - set(completion))
#동명이인이 완주못한게 아니라면 set a에 한명이 남는다. 그 사람이 범인!
if a:
return list(a)[0]
#동명이인이 완주못했다면, 1번의 for문으로 idx를 대조해가며 범인을 찾는다!
for idx, value in enumerate(completion):
if value != participant[idx]:
answer = participant[idx]
break
return answer
제일 간결하고 많은 좋아요를 받은 코드는 Collection.Counter를 썼더라.
공부를 좀 해봐야겠다.
반응형
'개발 > Python & Flask' 카테고리의 다른 글
Python Flask CSV 파일 다루기! 초간단 3줄 예시 (0) | 2020.11.10 |
---|---|
Python Sched 라이브러리 (몇초마다 반복실행) (0) | 2020.11.10 |
Flask 선행 라이브러리, Python Flask 오프라인 세팅 (0) | 2020.11.10 |
[Python] 단어변환 문제풀이(완전탐색) (0) | 2020.08.12 |
[python] 네트워크 문제풀이(DFS정복!) (0) | 2020.08.11 |