프로그래머스 110옮기기

wook2·2021년 7월 11일
0

알고리즘

목록 보기
25/117

https://programmers.co.kr/learn/courses/30/lessons/77886

스택을 사용할 수 있는가를 물어보는 문제이다.
110이 스택에 쌓이게되면 꺼내서 개수를 센다.
그리고 스택의 어느 위치에 넣어야할지를 고민하면 된다.
0이나오는 바로 뒤에 110을 넣어야한다.

def solution(s):
    answer = []
    for e in s:
        idx = 0
        cnt = 0
        ans = ''
        stack = []
        for x in e:
            stack.append(x)
            if len(stack) >= 3:
                if ''.join(stack[len(stack)-3:]) == '110':
                    stack.pop()
                    stack.pop()
                    stack.pop()
                    cnt += 1
        for i in range(len(stack)):
            if stack[i] == '0':
                idx = i + 1
        if cnt == 0:
            answer.append(''.join(stack))
        else:
            ans += ''.join(stack[0:idx])
            ans += '110'*cnt
            ans += ''.join(stack[idx:])
            answer.append(ans)
    
    return answer
profile
꾸준히 공부하자

0개의 댓글