본문 바로가기
컴퓨터/알고리즘

[프로그래머스] Lv1 같은 숫자 시러_python 문제 풀이

by 버니케이 2022. 7. 4.
반응형

출처

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

문제

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

입출력예시

문제풀이1

def solution(arr):
    push_arr = []
    for i in range(len(arr) - 1):
        if arr[i] != arr[i + 1]:
            push_arr.append(arr[i])
    push_arr.append(arr[-1])
    return push_arr
  • 그리디 풀듯이 푼 문제
  • 배열 앞 뒤로 비교해서 다른 수가 나오면 무조건 push -> 맨 마지막 수도 무조건 push (맨 마지막 수는 비교대상이 없기 때문)

문제풀이2

def solution2(arr):
    answer = [arr[0]]
    for x in arr[1:]:
        if answer[-1] != x:
            answer.append(x)
    return answer
  • 문제풀이1 을 개선한 풀이
  • answer 배열 초기 선언 시점에 미리 넣어놓고 시작함
반응형

댓글