110 옮기기

Level
3
문제 진행 상태
코드 완료
해설 작성 중
알고리즘 & 자료구조
리스트
정답률 (%)
30
태그
연습문제

문제 링크

풀이 과정

전체 코드

def solve(sequence): stack, num_110, i = [], 0, 0 while i < len(sequence): if sequence[i] == '0': if len(stack) >= 2 and stack[-2] == '1' and stack[-1] == '1': stack.pop() stack.pop() num_110 += 1 i += 1 else: stack.append(sequence[i]) i += 1 else: stack.append(sequence[i]) i += 1 find_0_idx = -1 # 0의 위치 for j in range(len(stack)-1, -1, -1): if stack[j] == '0': find_0_idx = j break if find_0_idx != -1: result = "".join(stack[:find_0_idx+1]) + num_110 * '110' + "".join(stack[find_0_idx+1:]) else: result = num110 * '110' + "".join(stack) return result def solution(s): answer = [] for sequence in s: answer.append(solve(sequence)) return answer
Python
복사