https://programmers.co.kr/learn/courses/30/lessons/1290
def solution(arr):
result = []
result.append(arr[0])
for i in arr:
if result[-1] != i:
result.append(i)
else:
continue
return result
print(solution([1,1,3,3,0,1,1]))
다른 분이 푸신 코드인데,
def solution(s):
a = []
for i in s:
if a[-1:] == [i]: continue
a.append(i)
return a
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(solution([1,1,3,3,0,1,1]))
print(a[-1:])
print(type(a[-1:]))
print(a[-1])
print(type(a[-1]))
#
[7]
<class 'list'>
7
<class 'int'>
a[-1:]이 부분을 a[-1]로 처리하면 마찬가지로 list index out of range
에러가 발생한다. 그래서 a[-1:]로 처리를 한 것을 알 수 있다. 이렇게 하면 해당 값이 아니라 해당 값이 리스트에 담겨서 반환된다. 슬라이싱을 사용하면 그대로 슬라이싱되어 리스트로 반환된다고 한다!
def no_continuous(s):
result = []
for c in s:
if (len(result) == 0) or (result[-1] != c):
result.append(c)
return result
# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( no_continuous( "133303" ))
이 분의 코드도 같은 문제가 발생하는 코드인데, (len(result) == 0)
부분을 추가하여 해결하셨다.