백준 16719 ZOAC Python

Derhon·2023년 12월 1일
0
post-custom-banner

백준 16719 ZOAC

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해서 꺼내서 사용하도록 했다.

profile
🧑‍🚀 이사했어요 ⮕ https://99uulog.tistory.com/
post-custom-banner

0개의 댓글