새소식

⌨️ Algorithms/프로그래머스

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

2022. 12. 14. 23:46

  • -

https://school.programmers.co.kr/learn/courses/30/lessons/12906

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

  • arr의 각 원소는 숫자 0~9
  • arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거
  • 제거된 후 남은 수들을 반환할 때는 arr의 원소들의 순서를 유지해야 함

제한사항

  • arr의 크기 : 1,000,000 이하의 자연수
  • arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수

 

"""
입출력 예시)

arr =  [1,1,3,3,0,1,1] -> [1,3,0,1]
arr =  [4,4,4,3,3] -> [4,3]
"""

 

 

## 의사코드 ##

# 후입선출 -> 스택

# 일단, 빈 스택 생성해서 arr의 원소를 하나씩 넣음
# if 현재 스택의 마지막 원소 == 지금 들어갈 arr의 원소:
#    통과 
# else: 
#   스택.append()

 

 

첫 번째 시도

 

def solution(arr):
    answer = [] 

    for i in arr:
        if len(answer) == 0:
            answer.append(i)
        else: 
            if answer[-1] == i:
                break
            else:
                answer.append(i)

    return answer

 

-> break 때문에 반복문 전체를 빠져나와서 실패

 

=> break가 아니라 continue를 사용해야 함

 

  • break
    • 반복문 전체 빠져나오기
  • continue
    • 해당 조건만 건너뛰기

 

 

통과한 코드

 

def solution(arr):
    answer = [] 

    for i in arr:
        if len(answer) == 0:
            answer.append(i)
        else: 
            if answer[-1] == i:
                continue
            else:
                answer.append(i)

    return answer

 

-> answer의 맨 마지막 원소가 i(지금 들어갈 arr의 원소)와 같으면 건너뛰고, 다르면 answer에 추가

 

 

 

cf) 이전에 작성했던 코드

 

https://monzheld.tistory.com/64

 

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

https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는

monzheld.tistory.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!