29.55m
import sys
title = [(ord(char), idx) for idx, char in enumerate(sys.stdin.readline().rstrip())]
res = [''] * len(title)
stack = []
stack.append(title)
while stack:
last = stack.pop()
MIN = min(last, key=lambda x: x[0])
MIN_IDX = last.index(MIN)
res[MIN[1]] = chr(MIN[0])
prev = last[0:MIN_IDX]
next = last[MIN_IDX + 1:]
if prev: stack.append(prev)
if next: stack.append(next)
print(''.join(res))
꽤 복잡한 구현 문제였기 때문에 틀릴거라 생각했는데 원트 성공해서 기분이 좋았다!!!
구현 아이디어는 기본적으로 문자열에서 앞부터 지나가면서 아스키코드 최소값을 찾아내고, 걔부터 분리해서 앞, 뒤를 스택에 담아두는 형식으로 했다.
어차피 우선순위는 무조건 뒤에서부터니까 stack.pop해서 꺼내서 사용하도록 했다.