문제
정해진 대로 풀면 됩니다.
효율성 테스트를 통과하기 위해서는 for loop 1번에 풀어야합니다 (배열의 크기가 10^6이므로 for loop을 2번 돌게 되면 1초가 넘게 됩니다.)
풀이
def solution(arr):
answer = []
for i in range(1,len(arr)) :
if(arr[i] == arr[i-1]) :
continue
else :
answer.append(arr[i-1])
answer.append(arr[len(arr)-1])
return answer
다른 사람의 풀이
def no_continuous(s):
a = []
for i in s:
if a[-1:] == [i]: continue
a.append(i)
return a
- a[-1:]를 빈 배열에 돌려도 안죽는구나.. => 리스트 슬라이싱하면 그냥 슬라이싱된 배열을 리턴하기 때문. 즉 빈 배열이 그냥 리턴되는거.
- [i]를 이용해 바로 list로 만들어주고 비교함.
해당 코드의 경우에는 빈 배열 a에 s를 넣는데, s를 순회하면서 하나씩 꺼내, 직전에 a에 넣었다면 넣지 않고(if a[-1:]==[i]:continue) 넣었다면 넣는 방식이다.