[문제 풀이] 같은 숫자는 싫어 - 스택 LV 1.

SEUNGJUN·2024년 3월 30일
0

Data Structure & Algorithm

목록 보기
10/20

요구 사항

문제 풀이

1차시 풀이

def solution(arr):
    stack = []
    while arr:
        popData = arr.pop(0)
        if not stack:
            stack.append(popData)
        elif stack[-1] != popData:
            stack.append(popData)
    return stack

주어진 배열의 값을 맨앞에서 하나씩 뽑은다음에 stack이라는 빈 배열에 넣어주고 넣어 줄때 존재 여부 확인하고 없을때만 추가해주는 방법

1차시 결과

주어진 배열의 크기가 커지게 되면 시간이 많이 걸려서 효율성 테스트에서 불합격 한듯 하다..

2차시 풀이

def solution(arr):
    stack = []
    for i in arr:
        if not stack or stack[-1] != i:
            stack.append(i)
    return stack

1차시는 while루프 내에서 리스트의 pop(0)을 하게 되면 전체 시간 복잡도가 O(n^2)걸리게 된다. 2차시 방법은 for 루프 내에서 한번씩만 탐색을 하므로 O(n)의 시간이 걸리게 되므로 더 효율 적이다.

profile
RECORD DEVELOPER

0개의 댓글