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
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 블록 게임(Python) (0) | 2022.02.10 |
---|---|
[프로그래머스] 카드 짝 맞추기(Python) (0) | 2022.02.08 |
[프로그래머스] [3차] 자동완성(Python) (0) | 2022.02.07 |
[프로그래머스] 호텔 방 배정(Python) (0) | 2022.02.05 |
[프로그래머스] 미로 탈출(Python) (0) | 2022.02.04 |
댓글