
17413. ๋จ์ด ๋ค์ง๊ธฐ2 (silver3)
# ์๋ฃ๊ตฌ์กฐ
๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ก์ ๋, ์ด ๋ฌธ์์ด์์ ๋จ์ด๋ง ๋ค์ง์ผ๋ ค๊ณ ํ๋ค.
๋จผ์ , ๋ฌธ์์ด S๋ ์๋์๊ณผ ๊ฐ์ ๊ท์น์ ์งํจ๋ค.
- ์ํ๋ฒณ ์๋ฌธ์('a'-'z'), ์ซ์('0'-'9'), ๊ณต๋ฐฑ(' '), ํน์ ๋ฌธ์('<', '>')๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค.
- ๋ฌธ์์ด์ ์์๊ณผ ๋์ ๊ณต๋ฐฑ์ด ์๋๋ค.
- '<'์ '>'๊ฐ ๋ฌธ์์ด์ ์๋ ๊ฒฝ์ฐ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ๋ฑ์ฅํ๋ฉฐ, '<'์ด ๋จผ์ ๋ฑ์ฅํ๋ค. ๋, ๋ ๋ฌธ์์ ๊ฐ์๋ ๊ฐ๋ค.
ํ๊ทธ๋ '<'๋ก ์์ํด์ '>'๋ก ๋๋๋ ๊ธธ์ด๊ฐ 3 ์ด์์ธ ๋ถ๋ถ ๋ฌธ์์ด์ด๊ณ , '<'์ '>' ์ฌ์ด์๋ ์ํ๋ฒณ ์๋ฌธ์์ ๊ณต๋ฐฑ๋ง ์๋ค. ๋จ์ด๋ ์ํ๋ฒณ ์๋ฌธ์์ ์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ถ๋ถ ๋ฌธ์์ด์ด๊ณ , ์ฐ์ํ๋ ๋ ๋จ์ด๋ ๊ณต๋ฐฑ ํ๋๋ก ๊ตฌ๋ถํ๋ค. ํ๊ทธ๋ ๋จ์ด๊ฐ ์๋๋ฉฐ, ํ๊ทธ์ ๋จ์ด ์ฌ์ด์๋ ๊ณต๋ฐฑ์ด ์๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฌธ์์ด S๊ฐ ์ฃผ์ด์ง๋ค. S์ ๊ธธ์ด๋ 100,000 ์ดํ์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฌธ์์ด S์ ๋จ์ด๋ฅผ ๋ค์ง์ด์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
baekjoon online judge
์์ ์ถ๋ ฅ 1
noojkeab enilno egduj
์์ ์ ๋ ฅ 2
<open>tag<close>
์์ ์ถ๋ ฅ 2
<open>gat<close>
์์ ์ ๋ ฅ 3
<ab cd>ef gh<ij kl>
์์ ์ถ๋ ฅ 3
<ab cd>fe hg<ij kl>
ํ์ด)
- ์ํ๋ฒณ ์๋ฌธ์('a'-'z'), ์ซ์('0'-'9'), ๊ณต๋ฐฑ(' '), ํน์ ๋ฌธ์('<', '>')๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค.
- ๋ฌธ์์ด์ ์์๊ณผ ๋์ ๊ณต๋ฐฑ์ด ์๋๋ค.
- '<'์ '>'๊ฐ ๋ฌธ์์ด์ ์๋ ๊ฒฝ์ฐ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ๋ฑ์ฅํ๋ฉฐ, '<'์ด ๋จผ์ ๋ฑ์ฅํ๋ค. ๋, ๋ ๋ฌธ์์ ๊ฐ์๋ ๊ฐ๋ค.
์ฃผ์ด์ง ๊ท์น์ ๋ฐ๋ผ while๋ฌธ ์์ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ์๋ค.
๋จผ์ words๋ผ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ ์ ๋ ฅ์ ๋ฐ์๋ค. ๊ทธ ๋ค์ while๋ฌธ์ ์ฌ์ฉํด์ words ๋ฆฌ์คํธ์ ๊ธธ์ด๋งํผ ๋ฐ๋ณตํด์ฃผ์๋ค.
if๋ฌธ์ ์ฌ์ฉํด์ words ๋ฆฌ์คํธ์ ์์ ์ค ์ด๋ฆฐ ๊ดํธ๋ฅผ ๋ง๋ฌ์ ๋๋ ๋ซํ ๊ดํธ๋ฅผ ๋ง๋๊ธฐ ์ ๊น์ง ๋ค์ง์ง ์๊ณ ์ง๋๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค์ ํด๋นํ๋ idx๋ฅผ ์ฆ๊ฐ์์ผ์ฃผ์๋ค. ๋ซํ ๊ดํธ๋ฅผ ๋ง๋ฌ์ ๋๋ ๋์ด๊ฐ์ผํ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค(idx)๋ฅผ 1 ์ฆ๊ฐ์ํค๊ณ , ๋ค์ ์์์ ๋ํด ๊ฒ์ฌํ๊ธฐ ์ํด ์ธ๋ฑ์ค๋ฅผ ๋ 1 ์ฆ๊ฐ์์ผ์ฃผ์๋ค.
elif๋ฌธ๊ณผ isalnum()ํจ์๋ฅผ ์ฌ์ฉํด์ words ๋ฆฌ์คํธ์ ์์๊ฐ ์ซ์ ๋๋ ์ํ๋ฒณ์ผ ๋ ๊ฒ์ฌ๋ฅผ ํด์ฃผ์๋ค.
๊ฒ์ฌํ๋ ์ฒซ ๋ฒ์งธ ์์์ ์ธ๋ฑ์ค์ ํด๋นํ๋ start๋ฅผ ์ซ์/์ํ๋ฒณ์ ๋ฐ๊ฒฌํ ์ธ๋ฑ์ค์ธ idx๋ก ์ ์ฅํด์ฃผ์๊ณ ,
while๋ฌธ์ ๋ ์ฌ์ฉํด์ idx๊ฐ words ๋ฆฌ์คํธ ๋ฒ์ ๋ด์ด๊ณ , ๋ฆฌ์คํธ ์์๊ฐ ์ซ์, ์ํ๋ฒณ์ผ ๋ idx์ ๊ฐ์ 1์ฉ ์ฆ๊ฐ์์ผ์ฃผ์๋ค.
temp๋ผ๋ ๋ณ์๋ฅผ ์ฌ์ฉํด์ start๋ถํฐ idx, ์ฆ ์ซ์/์ํ๋ฒณ์ธ ๋ฒ์์ ๋ถ๋ถ๋ง reverse()ํจ์๋ฅผ ์ฌ์ฉํด์ ๋ค์ง์ด์ค ๊ฑธ ์ ์ฅํด์ฃผ์๋ค.
๊ทธ ๋ค์ temp ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ๋ค์ words๋ฆฌ์คํธ์ ์ ์ฅํด์ฃผ์๋ค.
๊ทธ ์ธ์ ๊ฒฝ์ฐ์ ํด๋นํ๋ ๊ณต๋ฐฑ์ ๊ฒฝ์ฐ๋, else๋ฌธ์ ์ฌ์ฉํด์ idx๋ฅผ 1 ์ฆ๊ฐ์์ผ์ ์ง๋๊ฐ๋๋ก ์ฒ๋ฆฌํด์ฃผ์๋ค.
๋ง์ง๋ง์ผ๋ก while๋ฌธ ๋ฐ์์ words ๋ฆฌ์คํธ๋ฅผ join์ ์ฌ์ฉํด์ ์์ ๊ตฌ๋ถ ์์ด ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
import sys
input = sys.stdin.readline
words = list(input().rstrip())
idx = 0
start = 0
while idx < len(words):
if words[idx] == "<": # ์ด๋ฆฐ ๊ดํธ๋ฅผ ๋ง๋ฌ์ ๋
idx += 1
while words[idx] != ">": # ๋ซํ ๊ดํธ๋ฅผ ๋ง๋ ๋ ๊น์ง
idx += 1
idx += 1
elif words[idx].isalnum(): # ์ซ์/์ํ๋ฒณ์ด ์์ ๋
start = idx
while (idx < len(words)) and (words[idx].isalnum()):
idx += 1
temp = words[start:idx] # ํด๋น ์ธ๋ฑ์ค๊น์ง ๋ค์ง๊ธฐ
temp.reverse()
words[start:idx] = temp # ๋ค์ง์ ๊ฑธ ๋ค์ ์ ์ฅํด์ค
else: # ๊ณต๋ฐฑ
idx+=1
print("".join(words))
'๋ฐฑ์ค > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 1935๋ฒ (0) | 2022.11.21 |
---|---|
[Python] ๋ฐฑ์ค 2910๋ฒ (0) | 2022.11.20 |
[Python] ๋ฐฑ์ค 9375๋ฒ (0) | 2022.11.12 |
[Python] ๋ฐฑ์ค 11652๋ฒ (0) | 2022.11.12 |
[Python] ๋ฐฑ์ค 5568๋ฒ (1) | 2022.11.12 |