기억은 짧고 기록은 길다
[프로그래머스/Programmers] 같은 숫자는 싫어 - Python 본문
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
'CodingTest > programmers' 카테고리의 다른 글
[프로그래머스/Programmers] 문자열 내 p와 y의 개수 - Python (0) | 2021.08.27 |
---|---|
[프로그래머스/Programmers] 나누어 떨어지는 숫자 배열 - Python (0) | 2021.08.27 |
[프로그래머스/Programmers] x만큼 간격이 있는 n개의 숫자 - Python (0) | 2021.08.27 |
[프로그래머스/Programmers] 가운데 글자 가져오기 - Python (0) | 2021.08.14 |
[프로그래머스/Programmers] 2016년 - Python (0) | 2021.08.13 |