Today
Total
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
관리 메뉴

기억은 짧고 기록은 길다

[프로그래머스/Programmers] 같은 숫자는 싫어 - Python 본문

CodingTest/programmers

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

ukunV 2021. 8. 27. 20:27

Link

 

코딩테스트 연습 - 같은 숫자는 싫어

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은

programmers.co.kr

 

Solution

해당 문제는 인덱싱의 개념에 대해 잘 알고 있다면 쉽게 해결할 수 있는 문제이다.

for문의 range를 range(len(arr))로 설정하면 if의 비교문에서 arr범위를 초과하기 때문에 len(arr) - 1을 해주었다.


해당 for문으로 인해 len(arr) - 1 인덱스는 if문을 거치지 못하지만 len(arr) - 2의 인덱스가 len(arr) - 1 인덱스의 수와 같을 경우 추가가 되지 않고 다를 경우 추가가 되기 때문에 len(arr) - 1 인덱스의 수는 무조건 answer에 포함되게 된다.

ex)

[1, 1, 3, 3, 0, 1, 1] : len(arr) - 1 == len(arr) - 2인 경우

-> [1, 3, 0] -> len(arr) - 1과 len(arr) - 2 인덱스의 수가 같은 경우 -> len(arr) - 1 인덱스의 수 추가 -> [1, 3, 0, 1]

 

[1, 1, 3, 3, 0, 1, 4] : len(arr) - 1 != len(arr) - 2인 경우

-> [1, 3, 0, 1] -> len(arr) - 1과 len(arr) - 2 인덱스의 수가 다른 경우 -> len(arr) - 1 인덱스의 수 추가 -> [1, 3, 0, 1, 4]

 

def solution(arr):
    answer = [arr[i] for i in range(len(arr) - 1) if (arr[i] != arr[i + 1])]

    answer.append(arr[-1])

    return answer
🔑 key point: Indexing

 

Other Solution

def solution(arr):
    answer = []

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

    return answer
Comments