์ฝ”ํ…Œ์ค€๋น„

<๊ตฌํ˜„, ๋ฌธ์ž์—ด> ๋ฐฑ์ค€ 17413๋ฒˆ. ๋‹จ์–ด ๋’ค์ง‘๊ธฐ 2 (์‹ค๋ฒ„ 3)

์š”๋Œœ๋‹ค 2023. 1. 16. 14:34

https://www.acmicpc.net/problem/17413

 

17413๋ฒˆ: ๋‹จ์–ด ๋’ค์ง‘๊ธฐ 2

๋ฌธ์ž์—ด S๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด ๋ฌธ์ž์—ด์—์„œ ๋‹จ์–ด๋งŒ ๋’ค์ง‘์œผ๋ ค๊ณ  ํ•œ๋‹ค. ๋จผ์ €, ๋ฌธ์ž์—ด S๋Š” ์•„๋ž˜์™€๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ์ง€ํ‚จ๋‹ค. ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž('a'-'z'), ์ˆซ์ž('0'-'9'), ๊ณต๋ฐฑ(' '), ํŠน์ˆ˜ ๋ฌธ์ž('<', '>')๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ

www.acmicpc.net

์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜์˜€๋‹ค..

ans = ""
tag = False #์ •์ƒ์ถœ๋ ฅ์ธ์ง€ ๋’ค์ง‘์–ด ์ถœ๋ ฅ์ธ์ง€ ์—ฌ๋ถ€ Tag
stack = ""
for i in input():
    if i == "<":
        tag = True
        ans += stack[::-1]
        stack = ""
        ans += i
        continue
    elif i == ">":
        tag = False
        ans += i
        continue
    elif i == " ":
        ans += stack[::-1] + " "
        stack = ""
        continue
        
    if tag:
        ans += i
    else:
        stack += i
print(ans+stack[::-1])

๊ธฐํ˜ธ "<"๊ฐ€ ๋‚˜์˜ค๋ฉด, ">"๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ์ •์ƒ์ถœ๋ ฅ์„ ํ•ด์ฃผ์–ด์•ผํ•˜๋ฏ€๋กœ Tag๋Š” True๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

์ง€๊ธˆ๊ป stack์— ์ €์žฅ๋œ ๋ฌธ์ž๋ฅผ ๊ฑฐ๊พธ๋กœ ๋„ฃ์–ด์ฃผ๊ณ , stack์„ ๋‹ค์‹œ ๋น„์›Œ์ค€๋‹ค. ์ดํ›„ ans์— ">"๊ฐ€ ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ ๋”ํ•ด์ค€๋‹ค. 

">"๊ฐ€ ๋‚˜์˜ค๋ฉด Tag๋Š” False๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ , ">"๋ฅผ ๋„ฃ์–ด์ค€๋‹ค. 

๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋’ค์ง‘๋Š” ๋‹จ์–ด๊ฐ€ ๊ตฌ๋ถ„๋˜์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๋ฐฑ์ด ๋‚˜์˜ค๋ฉด ์ง€๊ธˆ๊นŒ์ง€ ์Šคํƒ์— ์ €์žฅ๋œ ๋ฌธ์ž๋“ค์„ ๊ฑฐ๊พธ๋กœ ans์— ๋„ฃ์–ด์ค€๋‹ค.

์ด๋Ÿฐ ์ ‘๊ทผ์„ ํ•˜์ง€ ๋ชปํ•œ ๋‚˜ ๋ฐ˜์„ฑํ•˜์ž..