반응형
역시 알고리즘 문제풀이는 파이썬이 답인 것 같다.
C++는 내가 추구하고자 하는 방향에 필요 없는 언어인것 같기도 하고...
현재로써 다른 공부할 것들이 많기 때문에...
익숙하면서도 편한, 숏 코딩에 좋은 파이썬을 쓰기로 했다.
예외처리에도 편하고, collection이 너무 사기여서
알고리즘 문제풀이는 무조건 파이썬으로 하는 게 좋은 것 같다...!
일단 이런 비교 문제는. 항상
1. n시간에 끝날 수 있는가?
O라면 선형 검색
X라면 Collection을 이용한 정렬 (Quick/Merge를 이용한 nlogn시간)
이 두 가지를 생각하는 게 핵심이다.
즉, 데이터 비교 == 정렬 이라고 생각하는 것이 좋다.
난 어떻게 접근했냐면...
일단 두 데이터를 정렬한다.
그러면 두 데이터의 len이 같다면... 무언가 다른 요소가 있을 것이고.
len이 다르다면... 중복 또는 부족이 존재할 것이다.
즉 idea는
정렬 후 앞에서부터 비교!
모자라면... 남은 input이 완주하지 못한 선수.
다르다면... 그녀석이 완주하지 못한 선수.
def solution(participant, completion):
# 두 List를 정렬한다. O(nlogn)
participant.sort()
completion.sort()
# 앞에서부터 비교한다. 차이가 있다면. 그 녀석이 범인이다.
for i in range(0, len(completion)):
if participant[i] != completion[i]:
return participant[i]
# 남는 요소가 있다면. 그 녀석이 범인이다.
return participant.pop()
이해가 안되는 분들을 위해... print 결과를 보면 이해가 빠르다.
반응형
'ETC' 카테고리의 다른 글
Programmers 코딩테스트 연습 위장 목록 Python 정답. (0) | 2019.12.11 |
---|---|
Programmers 코딩테스트 연습 전화번호 목록 Python 문제풀이. (0) | 2019.12.11 |
[Hash] 프로그래머스 코딩테스트 연습문제 Hash 3번 위장 JAVA 풀이 (0) | 2019.11.26 |
[Hash] 프로그래머스 전화번호 목록 문제풀이 Java (0) | 2019.11.26 |
[Stack/Queue] 다리를 지나는 트럭 JAVA 솔루션 (1) | 2019.11.24 |