def solution(arr): answer = [arr[0]] while len(arr) > 0: a = arr.pop(0) if answer[-1] != a: answer.append(a) return answer
이 코드로 모든 예제는 풀었지만, 효율성 검증에서 싸그리 탈락했다.
효율성 문제라 혼자서는 어디가 문제인지 모르겠어서 gpt의 도움을 받아봤다.
나는 pop()
을 사용한게 신의 한수였다고 생각했는데
오히려 이게 시간복잡도를 높이는 결과가 되었다....
gpt가 2가지 해결방법을 알려줬다.
def solution(arr): i = 1 while i < len(arr): if arr[i] == arr[i - 1]: arr.pop(i) else: i += 1 return arr
def solution(arr): answer = [] for i in range(len(arr)): if i == 0 or arr[i] != arr[i - 1]: answer.append(arr[i]) return answer
나는 arr의 요소 하나하나를 체크하는게 더 비효율적인 코드라고 생각했는데 아니었다.
알고리즘 시간복잡도에 대해 좀 더 공부해야겠다.