def solution(ingredient):
answer = 0
ans=''
stack=[]
#1231만 햄버거
for i in range(len(ingredient)):
ans+=str(ingredient[i])
while 1:
if "1231" in ans:
if ans.count("1231")>1:
answer+=ans.count("1231")
ans = ans.replace("1231","")
else:
ans = ans.replace("1231","")
answer+=1
else:
return answer
break
이렇게 코드를 짜니
입력 값 : [1, 2, 1, 2, 3, 1, 3, 1, 2, 3, 1, 1]
기댓값 〉 2
실행 결과 〉3
이 테스트코드에서 다른 결과가 나왔다. 밑에서부터 1,2,3,1을 체크했을 때, 다시 밑으로 돌아가서 체크해야하는데 연속될경우 그냥 연속된 애들을 다 없애는걸로 짜서 오류가 났다.
def solution(ingredient):
s= []
cnt =0
for i in ingredient:
s.append(i)
if s[-4:] == [1,2,3,1]:
cnt+=1
for i in range(4):
s.pop()
return cnt
이렇게 짜니깐 잘 됐다. 이 방법도 처음에 생각했었는데 s[-4:]도 할수 있는지 몰라서 못 짰었다. 이렇게 짤수 있는지 처음 알았다리..
for i in range(4):
s.pop()
대신에
del s[-4:]
del함수를 써도 된다!
리스트 슬라이싱을 한번더 정확히 짚고 넘어가자면
s가 [1, 2, 3, 4, 5, 6, 7, 8, 9]일때
s[-4:]는 [6,7,8,9]를 반환한다. 인덱스 -4가 6이므로 6부터 끝까지라는 말
s[:-4]는 [1,2,3,4,5]를 반환한다. 처음부터 6전까지니깐!