[Programmers] 110 옮기기
2021. 7. 25. 11:13ㆍProgramming/Problem Solving
728x90
https://programmers.co.kr/learn/courses/30/lessons/77886
코딩테스트 연습 - 110 옮기기
0과 1로 이루어진 어떤 문자열 x에 대해서, 당신은 다음과 같은 행동을 통해 x를 최대한 사전 순으로 앞에 오도록 만들고자 합니다. x에 있는 "110"을 뽑아서, 임의의 위치에 다시 삽입합니다. 예를
programmers.co.kr
110은 한 세트로 무조건 움직여야 한다는 개념만 가지면 된다.
그리고 110이 만들어지면 그 이전에건 신경쓰지 않아도 된다.
def solution(s):
answer = []
for num in s:
answer.append(go(num))
return answer
def go(num: str):
ind = 0
cnt = 0
st = []
numres = ""
for i in range(len(num)):
if len(st) > 2 and st[-1] == "0" and st[-2] == "1" and st[-3] == "1":
for j in range(3):
st.pop()
cnt += 1
st.append(num[i])
if len(st) > 2 and st[-1] == "0" and st[-2] == "1" and st[-3] == "1":
for i in range(3):
st.pop()
cnt += 1
for i in range(len(st)):
numres += st[i]
res = "110"*cnt
check = False
for i in range(len(numres)-1, -1, -1):
if numres[i] == "0":
numres = numres[:i+1]+res+numres[i+1:]
check = True
break
if check is False:
numres = res + numres
return numres
'Programming > Problem Solving' 카테고리의 다른 글
[BOJ] 2461 대표선수 - Python (0) | 2021.07.26 |
---|---|
[Programmers] 모두 0으로 만들기 (0) | 2021.07.25 |
[BOJ] 20057 마법사 상어와 토네이도 - Python (0) | 2021.07.22 |
[BOJ] 20061 모노미노도미노 - Python (0) | 2021.07.21 |
[BOJ] 18809 Gaaaaaaaaaarden - Python (0) | 2021.07.20 |