코딩 테스트/프로그래머스

[Python] 프로그래머스 같은 숫자는 싫어

위시리 2024. 10. 15. 21:41

알고리즘 고득점 kit - 스택/큐 - lv 1

 

문제 분석

  • 배열 arr 의 원소는 0부터 9까지
  • 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거
  • 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지

 

코드 설계

  • 만약 answer 배열이 비어있다면 값을 넣고
  • answer이 비어있지 않고
  • 배열의 마지막 값이 입력하려는 값과 같지 않다면
  • answer 배열에 추가

 

정답 코드

def solution(arr):
    answer = []
    for i in arr:
        if answer :
            if i != answer[-1] : # answer에 값이 있다면
                answer.append(i)
        else : # answer에 값이 없다면
            answer.append(i)

    return answer

 

다른 사람 코드 1

def solution(arr): 
    answer = []
    for i in arr : 
        if answer[-1:] == [i] :
            continue
        answer.append(i)
    return answer
  • [ -1 : ] : 처음부터 마지막 미만

 

다른 사람 코드 2

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

 

2회차 - 2024.11.26

  • answer안에 값이 있을 때, 마지막 리스트 값이 현재 넣으려는 값과 같다면 continue
  • 다르면 append 
def solution(arr):
    answer = []
    for i in arr : 
        
        if answer and answer[-1] ==i:
            continue
        else : 
            answer.append(i)
    
    return answer