algo lev-1 같은 숫자는 싫어! (python)
- 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
Comments