Post

[BOJ] ZOAC - 16719 (G5)

[BOJ] ZOAC - 16719 (G5)
시간 제한메모리 제한
2 초512 MB

문제

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

풀이

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

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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)

This post is licensed under CC BY 4.0 by the author.