[BOJ] 16719. ZOAC(๐Ÿฅ‡, ๊ตฌํ˜„)

lemythe423ยท2023๋…„ 6์›” 20์ผ
0

BOJ ๋ฌธ์ œํ’€์ด

๋ชฉ๋ก ๋ณด๊ธฐ
15/133
post-thumbnail

๋ฌธ์ œ

ํ’€์ด

์ฒจ์—” ๋‹จ์ˆœํžˆ ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๊ฐ€ ๋น ๋ฅธ๊ฑฐ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋ฉด ๋˜๋Š” ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๋ฌธ์ž์—ด์ด ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์•ž์— ์˜ค๋„๋ก ์ถœ๋ ฅํ•ด์•ผ ๋˜๋Š” ๊ฑฐ์˜€๋‹ค.

  1. ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆœ์„œ๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ์„ ์ฐพ๋Š”๋‹ค
  2. ์•ŒํŒŒ๋ฒณ์„ ์ฐพ์•˜์œผ๋ฉด ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ ์•ŒํŒŒ๋ฒณ ๋‹ค์Œ ์ˆœ์„œ์— ์žˆ๋Š” ๋‹จ์–ด๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ์„ ์ฐพ๋Š”๋‹ค
  3. ๋’ค์— ๋” ์ด์ƒ ์ฐพ์„ ์•ŒํŒŒ๋ฒณ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์•ž์œผ๋กœ ๊ฐ„๋‹ค

๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ์„ ์ฐพ๊ณ  ๊ทธ ๋‹ค์Œ๋ถ€ํ„ฐ ๋˜ ๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ์„ ์ฐพ๋Š” ์ด์œ ๋Š”, ์‚ฌ์ „์ˆœ์œผ๋กœ ๋ฌธ์ž๋ฅผ ๋‚˜์—ดํ•˜๊ธฐ ์œ„ํ•ด์„  ๊ทธ ๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ์ด ๊ฐ€์žฅ ์•ž์— ์žˆ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ ์•ŒํŒŒ๋ฒณ ๋’ค์— ์žˆ๋Š” ๋ฌธ์ž๋“ค์„ ์‚ฌ์ „ ์ˆœ์„œ๋Œ€๋กœ ์ฐพ๊ณ , ๊ทธ ๋‹ค์Œ์— ์ •๋ง ๋” ์ด์ƒ ์ฐพ์„ ์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด ๊ทธ ๊ฐ€์žฅ ๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ ์ด์ „์˜ ๋ฌธ์ž๋“ค์„ ์ฐพ๋Š”๋‹ค.

์ผ๋‹จ ๋ฌธ์ž์—ด ๊ธธ์ด ๋งŒํผ์˜ ๊ธธ์ด๋ฅผ ๊ฐ€์ง€๋ฉด์„œ ๋นˆ ๊ณต๋ฐฑ('')์„ ๊ฐ€์ง€๋Š” ans๋ผ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค. ์•ž์—์„œ๋ถ€ํ„ฐ ์•ŒํŒŒ๋ฒณ์„ ์ฐพ๊ณ , ์ฐพ์•˜์œผ๋ฉด ๊ทธ ๋’ค๋ถ€ํ„ฐ ์ฐพ๊ณ , ์ด ๋ฐฉ์‹์„ ์žฌ๊ท€๋กœ ํ•  ์ƒ๊ฐ์„ ๋ชปํ•˜๊ณ  ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ’€ ์ƒ๊ฐ์„ ํ–ˆ๋Š”๋ฐ, left์™€ right๋กœ ๋‚˜๋ˆ„์–ด์„œ ๋’ค์— ๋” ์ฐพ์„ ๋ฌธ์ž๊ฐ€ ์žˆ์œผ๋ฉด right ํ•จ์ˆ˜๋ฅผ, ๋’ค์— ๋” ์ฐพ์„ ๊ฒŒ ์—†์œผ๋ฉด left๋ฅผ ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ธ๋ฑ์Šค ์ฒ˜๋ฆฌ๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ–ˆ๋‹ค.

๋ฌธ์ œ ๋ถ„๋ฅ˜๋ฅผ ๋ณด๋‹ˆ ์žฌ๊ท€๋กœ ๋ถ„๋ฅ˜๋˜์–ด ์žˆ์–ด์„œ ์žฌ๊ท€๋กœ ํ•˜๋Š” ๋ฐฉ์‹์„ ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ดค๋‹ค. ์ผ๋‹จ ์ ค ๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ์„ ์ฐพ๊ณ , ์ฐพ์•˜๋‹ค๋ฉด ์ถœ๋ ฅํ•˜๊ณ  ์žฌ๊ท€๋กœ ๊ทธ ๋‹ค์Œ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ์ ค ๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ์„ ์ฐพ๋Š”๋‹ค. ์ด๊ฑธ ๋ฐ˜๋ณตํ•˜๋‹ค๊ฐ€ ๋” ์ด์ƒ 1. ๋’ค์— ๋ฌธ์ž๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, 2. ๋ฌธ์ž๋ฅผ ๋‹ค ์ฐพ์•„์„œ ๋” ์ฐพ์„ ๋ฌธ์ž๊ฐ€ ์—†๋‹ค๋ฉด return ํ•œ๋‹ค. ๊ทธ๋Ÿผ ์ฒจ์œผ๋กœ ๋˜๋Œ์•„์™€์„œ ๊ฑฐ๊ธฐ์„œ๋ถ€ํ„ฐ ์ ค ๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ–ˆ๋˜ ๊ทธ ์ธ๋ฑ์Šค๋กœ ๋˜๋Œ์•„์™€์„œ ๋‘ ๋ฒˆ์งธ๋กœ ๋น ๋ฅธ ์•ŒํŒŒ๋ฒณ์„ ์ฐพ๊ฒŒ ๋˜๊ณ  ์œ„์˜ ๋ฐฉ๋ฒ•์„ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค.

STARTLINK๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด A๋ฅผ ๋จผ์ € ์ฐพ๊ณ , A ์ดํ›„์˜ ๋ชจ๋“  ๋ฌธ์ž๋“ค์„ ์ถœ๋ ฅํ–ˆ๋‹ค๋ฉด ARTLINK์ธ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. A๋ฅผ ์ฐพ์€ ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์ฐพ์€ ๊ฒƒ์ด๋ฏ€๋กœ(๊ฐ€์žฅ ์ฒ˜์Œ์— ์ฐพ์•˜์œผ๋‹ˆ๊นŒ) ๋” ์ด์ƒ ์ฐพ์„ ๋ฌธ์ž๊ฐ€ ์—†์œผ๋ฉด return ํ•ด์„œ ์‹œ์ž‘ ์ธ๋ฑ์Šค๊ฐ€ 0์ธ ์ƒํƒœ๋กœ ๋˜๋Œ์•„์˜ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿผ ๋‹ค์‹œ 0๋ถ€ํ„ฐ ๋น ๋ฅธ ๋ฌธ์ž๋ฅผ ์ฐพ๊ฒŒ ๋˜๋Š”๋ฐ ์ ค ๋นจ๋ž๋˜ A ์ดํ›„์˜ ๋ฌธ์ž๋Š” ์ด๋ฏธ ๋‹ค ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋„ˆ๋จธ๊นŒ์ง„ ํƒ์ƒ‰ํ•˜์ง€ ์•Š๊ณ , ๋‘ ๋ฒˆ์งธ๋กœ ๋น ๋ฅธ ๋ฌธ์ž์ธ S๋ฅผ ์ฐพ๊ฒŒ ๋œ๋‹ค.

๋‚œ๊ด€

  1. ๊ทผ๋ฐ ์ด ๊ณผ์ •์—์„œ idx = search(i+1)์„ ๊ณ„์† idx = search(idx+1)๋กœ ํ•ด์„œ ์žฌ๊ท€๊ฐ€ ๋ฌดํ•œ๋Œ€๋กœ ๋Œ์•˜๋‹ค...
  2. ์•ŒํŒŒ๋ฒณ์„ ์ฐพ์•˜์œผ๋ฉด ์ถœ๋ ฅ์„ ํ•˜๊ณ  ๋‹ค์Œ ํ•จ์ˆ˜๋กœ ๋„˜์–ด๊ฐ€์•ผ ํ•˜๋Š”๋ฐ ํ•จ์ˆ˜๋กœ ๋„˜์–ด๊ฐ”๋‹ค๊ฐ€ ์ถœ๋ ฅ์„ ํ•˜๋Š”๋ฐ”๋žŒ์— ์ˆœ์„œ๊ฐ€ ์—‰๋ง์œผ๋กœ ๋‚˜์™”์—ˆ๋‹ค
  3. ์žฌ๊ท€ ํ•จ์ˆ˜๋Š” ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฑธ ๊นจ๋‹ฌ์•˜๋‹ค
# 40ms

string = input()
L = len(string)
ans = ['']*L

def search(i):
    global ans
    minOrd, idx = 150, -1
    for k in range(i, L):
        if ans[k] != '':
            return idx
        if ord(string[k]) < minOrd:
            minOrd = ord(string[k])
            idx = k
    return idx

def zoac(i):
    while True:
        idx = search(i+1)
        if idx == -1:
            return 
        ans[idx] = string[idx]
        print(''.join(ans))
        zoac(idx)
        
zoac(-1)

ํ›„๊ธฐ

์žฌ๊ท€ ๋„ˆ๋ฌด ์–ด๋ ต๋‹ค
๋ฌธ์ œ ์ฒ˜์Œ ๋ณด๊ณ  ๊ณจ๋“œ5๊ธ‰์ธ๊ฐ€? ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ํ‘ธ๋Š”๋ฐ ์ดํ‹€๊ฑธ๋ ธ์œผ๋‹ˆ๊นŒ ๊ณจ๋“œ5 ๋งž๋Š”๋“ฏ

profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€