https://www.acmicpc.net/problem/16719
๋ฌธ์ ์์ฒด๋ฅผ ๊ณ์ ์๋ชป ์ดํดํด์ ๋ค๋ฅธ ์ฌ๋ ์ฝ๋์ ํ์ด ์ฐธ๊ณ
s=input()
res=['']*len(s)
def zoac(word, start):
if not word: # ๋ฆฌ์คํธ๊ฐ ๋น์๋ค๋ฉด return
return
minV=min(word) # ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์์ ์๋ ์ํ๋ฒณ
idx=word.index(minV) # ๊ทธ ์ํ๋ฒณ์ ์ธ๋ฑ์ค
res[start+idx]=minV # ์ธ๋ฑ์ค์ ์์น์ ์ํ๋ฒณ ์ ์ฅ
# word๋ ์ฌ๊ทํจ์๋ฅผ ์คํํ๊ฒ ๋๋ฉด ํ์ฌ ์์น๋ถํฐ ๋๊น์ง, ์ฒ์ ์์น๋ถํฐ ๋๊น์ง์ ๋ฌธ์๊ฐ ๋๋ค
# ๋ฌธ์์ด ์์ฒด์ index๋ฅผ ์ฃผ๋ฉด ๋ฆฌ์คํธ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฒ ๋๋ค
# ๋ฐ๋ผ์ ์์ ์์น๋ฅผ ์ธ์๋ก ๋๊ฒจ์ฃผ์ด ํจ๊ผ ๋ํด์ฃผ์ด์ผ ํ๋ค
print(''.join(res))
zoac(word[idx+1:], start+idx+1) # ํ์ฌ ์์น๋ถํฐ ๋๊น์ง ํ์
zoac(word[:idx], start)# ๋ชจ๋ ํ์ํ๋ค๋ฉด ์๋ถ๋ถ์ธ ์ฒ์๋ถํฐ ํ์ฌ์์น๊น์ง ํ์
zoac(s,0)