Skip to content
CatBus
Go back

[BOJ] ZOAC - 16719 (G5)

시간 제한메모리 제한
2 초512 MB

문제

문자열을 하나씩 추가하면서 사전 순으로 가장 앞서는 문자열을 만들어 나가는 문제이다.

풀이

재귀적으로 가장 작은 문자를 찾아서 추가하는 문제이다.

코드

import sys

sys.setrecursionlimit(10**6)

string = sys.stdin.readline().strip()
length = len(string)

visited = [False] * length

def select_char(start, end):
    if start > end:
        return

    min_char = 'Z' + '1' 
    min_idx = -1
    for i in range(start, end + 1):
        if string[i] < min_char:
            min_char = string[i]
            min_idx = i

    visited[min_idx] = True

    current_result = ""
    for i in range(length):
        if visited[i]:
            current_result += string[i]
    print(current_result)
    select_char(min_idx + 1, end)
    select_char(start, min_idx - 1)

select_char(0, length - 1)

시간 복잡도

O(N^2)


Share this post:

비슷한 글

16719이 글

본문을 Xenova/multilingual-e5-small 로 임베딩하고, 그 벡터를 PCA 로 32축에 눌러 왼쪽 막대로 그렸습니다. 비슷한 글은 지문도 닮습니다 — 위아래를 견줘 보세요. 계산은 빌드 때 끝나고 벡터는 브라우저로 오지 않습니다.

Previous Post
[BOJ] 배열 돌리기 - 17276 (S1)
Next Post
[BOJ] 카드 섞기 - 1091 (G4)