728x90
https://school.programmers.co.kr/learn/courses/30/lessons/77886
분석
1. 배열 돌면서 '110' 전부 제거한 리스트 생성 (스택)
2. '1'이 연속되는 인덱스 구하기
3. '1'이 연속되는 인덱스 이전에 '110' 개수만큼 추가
'0 1 1 1 1 1 1 0 1 0'
1. 110전부 제거 : ['0', '1', '1', '1']
0 1 1 1 11 1 0
0 1 1 1 1 1
0 1 1 11 1 0
2. 1이 연속되는 인덱스 : 3
3. 110' 개수만큼 추가 : 0 110 110 111
풀이
def solution(s):
answer = []
for x in s:
# 110 개수 구하기
stack=[]
cnt=0
for i in x:
if len(stack)>1 and i=='0' and stack[-2]=='1' and stack[-1]=='1':
stack.pop()
stack.pop()
cnt+=1
else:
stack.append(i)
idx=0
for s in stack[::-1]:
if s == '0':
break
else:
idx+=1
answer.append(''.join(stack[:len(stack)-idx]) + '110'*cnt + '1'*idx)
return answer
월간코드챌린지
728x90