본문 바로가기
Programming/Programmers

[프로그래머스] 110 옮기기(Python)

by 데이터현 2022. 2. 12.

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

 

코딩테스트 연습 - 110 옮기기

0과 1로 이루어진 어떤 문자열 x에 대해서, 당신은 다음과 같은 행동을 통해 x를 최대한 사전 순으로 앞에 오도록 만들고자 합니다. x에 있는 "110"을 뽑아서, 임의의 위치에 다시 삽입합니다. 예를

programmers.co.kr

 

문제의 핵심은 111보다 110이 앞에 와야 함.

 

def solution(s):
    answer = []
    for string in s:
        stack = []
        counting = 0
        for st in string:
            if(len(stack) >= 2 and stack[-1] == '1' and stack[-2] =='1' and st =='0'):
                counting+=1
                stack.pop()
                stack.pop()
            else:
                stack.append(st)
        count_1 = 0
        for st in stack[::-1]:
            if st == '0':
                break
            else:
                count_1 += 1
        answer.append(''.join(stack[:len(stack)-count_1])+(counting)*'110'+count_1*'1')
    return answer

댓글