algo lev-1 같은 숫자는 싫어! (python)

less than 1 minute read

  • arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
  • arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.

배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.

출처 : 프로그래머스 Level1

내가 푼 풀이

리스트의 처음 값을 넣은 배열 a 와 s의 값들을 차례차례 비교해서 연속적인 숫자가 한 번 씩만 들어갈 수 있도록, 다른 값을 만날 때만 a 에 넣는다.

def solution(s) :
    a = s[:1]
    for i in s:
        if a[-1] != i :   # a의 맨 마지막 값과 비교
        	a.append(i)
    return a

다른 사람의 풀이

def solution(s):
    a = []
    for i in s:
        if a[-1:] == [i]:   # 배열은 배열끼리 비교
            continue
        a.append(i)
    return a

문제를 풀 때 a = [] 를 했을 때, a = [-1]을 하면 에러가 났었는데,

배운 점!

1) 슬라이스는 슬라이스 된 새로운 배열을 반환한다

만약 빈 배열이라면 그대로 빈 배열을 반환한다.

a = [1,2,3,4,5]
print(a[-1])   # a[-1]  = 5
print(a[-1:])  # a[-1:] = [5]

2) 빈 배열의 마지막 값을 출력하려고 하면 에러가 난다

a = []
print(a[-1])  # IndexError: list index out of range

Categories:

Updated:

Comments