본문 바로가기

알고리즘/프로그래머스

[프로그래머스 코딩테스트 고득점 Kit / 스택/큐] 같은 숫자는 싫어 (python)

728x90

풀이

def solution(arr):
    answer = []
    
    for i in arr:
        if answer and i == answer[-1]:
                continue
        answer.append(i)
    return answer

stack을 활용한 문제.

arr 전체를 돌면서 answer 안에 데이터가 존재할 때 가장 위에 있는 데이터와 지금 넣으려는 데이터가 같으면 continue, 아니라면 answer에 넣는다.

 

python에서 stack 사용방법

# 선언
stack = []

# push
stack.append(5)
stack.append(2)

# pop
stack.pop() #2
stack.pop() #5

# push
stack.append(5)
stack.append(2)

# pop 하지 않고 젤 위에 있는 데이터 확인
stack[-1] #2

 

 

 

더보기

이전풀이

 

풀이 1

def solution(arr):
    answer = []

    answer.append(arr[0])
    index = 0

    for i in range(1, len(arr)):
        if arr[i] == answer[index]:
            continue
        else:
            answer.append(arr[i])
            index+=1

    return answer

 

다른 사람 풀이를 참고해보니 파이썬은 슬라이싱을 많이 사용하는 것 같다.

아래는 슬라이싱을 사용한 풀이이다.

 

풀이 2

def solution(arr):
    answer = []
    
    for i in arr:
        if [i] == answer[-1:]:
            continue
        else:
            answer.append(i)
        
    return answer

 

[-1:] 는 배열의 마지막 문자에서 마지막까지 라는 뜻으로 마지막 문자만을 의미하게 된다. 슬라이싱하면 결과가 [결과] 이런식으로 나오기 때문에 [i] == answer[-1:] 로 작성했다.

 

매우 쉽다

 

반응형