(codility with python) PermMissingElem
lesson3 - PermMissingElem
https://app.codility.com/programmers/lessons/3-time_complexity/perm_missing_elem/
sort한 이유가 A의 값과 A의 인덱스 값(인덱스 + 1)을 비교했을때 서로 같지 않으면 해당 값이 miss된 값이기 때문에 not in A가 아니라 인덱스 +1 != A[i]를 비교해야 한다 이후 for문을 통해 값이 Return되지 않으면 원래 A의 LEN값에 +1을 해준 값을 리턴해야 한다
O(n^)의 시간복잡도
# error 0%
def solution(A):
A.sort()
arr = [i for i in range(1, len(A) + 1)]
for i in arr:
if i not in A:
return i
solution([2,3,5,1])
다른풀이
O(N) or O(N * log(N))의 시간복잡도
def solution(A):
A.sort()
arr = [i for i in range(1, len(A) + 1)]
for i in range(len(arr)):
if arr[i] != A[i]:
return arr[i]
return len(A) + 1
solution([2,3,5,1])
다른풀이
O(N) or O(N * log(N))의 시간복잡도
def solution(A):
return 1 if not A else sum([i for i in range(1, len(A) + 2)]) - sum(A)
solution([2, 3, 1, 5])