๋ฐ์ํ
๐ค๋ฌธ์ ํด๊ฒฐ
1. ๋ชจ๋ 110 ์ฐพ๊ธฐ
2. ๋๋จธ์ง์ 0์ด ์์ผ๋ฉด ๊ทธ 0๋ค์ 110 ๋ค ๋ถ์ด๊ณ
3. 0์ด ์์ผ๋ฉด ์์ 110์ ๋ค ๋ถ์ธ๋ค
์์ฝ์ฑ ํด์ค์ง ๋ณด๊ณ ํ์๋๋ฐ ๋ต ๊ตฌํ๋๊ฒ ํท๊ฐ๋ ค์ ๋ง์ด ๊ณ ๋ฏผํ ๋ฌธ์
๐ป์์ค ์ฝ๋
def solution(s):
answer = []
for x in s:
# ๋ชจ๋ 110 ์ฐพ๊ธฐ
# 110 ์ฐพ์ผ๋ฉด ๋ณํ๋ x์์ ๋ ์ฐพ๊ธฐ
one_one_zero_cnt = 0
stack = []
for x_one in x:
if x_one == '1':
stack.append(x_one)
else:
if len(stack) >= 2 and stack[-1] == '1' and stack[-2] == '1':
stack.pop()
stack.pop()
one_one_zero_cnt += 1
else:
stack.append(x_one)
x = ''.join(stack)
# ๋ค์์๋ถํฐ ์ฒดํฌํด์ 0์ด ๋์ค๋ฉด ๊ทธ 0 ๋ค์ ๋ชจ๋ 110 ๋ถ์ด๊ธฐ
# 0 ์์ผ๋ฉด ๋๋จธ์ง๊ฐ ์ ๋ถ 1๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฏ๋ก ๋ชจ๋ 110์ ์์ ๋ถ์ด๊ธฐ
for i in range(len(x) - 1, -1, -1):
if x[i] == '0':
answer.append(x[:i + 1] + ('110' * one_one_zero_cnt) + x[i + 1:])
break
else:
answer.append('110' * one_one_zero_cnt + x)
return answer
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค
๋งํฌ: 110 ์ฎ๊ธฐ๊ธฐ
๋ฐ์ํ