OddOccurrencesInArray - Easy(배열, Codility)
2023. 1. 11. 11:07ㆍ코딩 테스트 준비
728x90
반응형
def solution(A):
if len(A) == 1:
return A[-1]
stack = []
A.sort()
for i in A:
if len(stack) == 0:
stack.append(i)
elif i == stack[-1]:
stack.pop()
else:
stack.append(i)
return stack[-1]
처음에는 그냥 count를 써서 2의 나머지가 1인 값을 구하게했으나 효율성에서 계속 떨어졌다.
이유를 찾아보니 count() 함수는 O(n)의 시간복잡도를 가지는데 이를 각 배열의 인자마다 사용하니 시간복잡도가 n의 제곱만큼 들었다.
결국 sort로 연속되는 값이 나오게 세팅하고 stack으로 각 값이 같은 경우만 pop()해주는 방식으로 최악의 경우 O(n) 최선의 경우 O(n log n)의 시간복잡도를 가지게 되었다.
앞으로 간단한 문제는 스택으로 잘 해결하자.
728x90
반응형
'코딩 테스트 준비' 카테고리의 다른 글
PermMissingElem - Easy (Codility, 시간복잡도) (0) | 2023.01.12 |
---|---|
FrogJmp - Easy (Codility, 시간복잡도) (0) | 2023.01.11 |
CyclicRotation - Easy (구현, Codility) (0) | 2023.01.11 |
BinaryGap - Easy (구현, codilty) (0) | 2023.01.11 |
기지국 설치 - level3 (winter/summer coding) (0) | 2023.01.10 |