def makeNew(x):
result = ''
ones = ''
cnt = 0
for i in x:
if i == '0':
if len(ones) < 2:
ones += '0'
result += ones
ones = ''
else:
cnt += 1
ones = ones[2:]
else:
ones += i
for i in range(cnt):
result += '110'
result += ones
return result
def solution(s):
return [makeNew(x) for x in s]
110
이라는 숫자를 몇개 나 만들 수 있는지에 대해 체크 해야한다.
사전적 순서를 빠르게 하기 위해서는 몇 가지 생각해야 할 필요가 있다.
110
보다 사전적으로 앞으로 와야하는 조합은 10
과 0
이다.
그리고 110
이 있으면 1
을 모두 뒤로 밀어 버릴 수 있다.
그래서 10
과 0
은 만날때 마다 result
에 붙여준다. (10
과 0
은 자리를 움직일 수 가 없기에 나올 때 마다 더해주면 된다.)
그리고 110
의 조합은 만들어질 때마다 cnt
에 갯수를 저장한다.
마지막으로 result
에 110
을 계산된 갯수만큼 더 해주고 나머지 조합을 잃은 1
들을 뒤에 더해주면 된다.
111000
을 예로 들면
## for 문
result = "100"
cnt = 1
## for 문
return "100110"