재귀를 통해 작은 알파벳을 선택한다.
- 정답을 출력할 result 배열을 만든다.
- arr에서 제일 작은 알파벳을 찾는다.
- 해당 알파벳을 기준으로 뒷배열에서 또 작업을 한 뒤, 앞배열에서 작업을 한다.
import sys
input = sys.stdin.readline
S = list(input().rstrip())
result = ['']*len(S)
def func(arr, start):
if not arr:
return
_min = min(arr)
idx = arr.index(_min)
result[start+idx] = _min
print("".join(result))
func(arr[idx+1:], start+idx+1)
func(arr[:idx], start)
func(S, 0)
'개발 > 알고리즘' 카테고리의 다른 글
[백준 2224] 명제 증명 (python) (0) | 2021.07.12 |
---|---|
[백준 2638] 치즈 (python) (0) | 2021.06.02 |
[백준 9934] 완전 이진 트리 (python) (0) | 2021.05.31 |
[백준 9470] Strahler 순서 (python) (0) | 2021.05.31 |
[백준 15918] 랭퍼든 수열쟁이야!! (python) (0) | 2021.05.30 |
최근댓글