λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
"곡뢀" π‘Ÿπ‘’π‘π‘œπ‘Ÿπ‘‘/π΄π‘™π‘”π‘œπ‘Ÿπ‘–π‘‘β„Žπ‘š

[Python/λ°±μ€€] 5397 : ν‚€λ‘œκ±°

by ΰ·† Yoni ΰ·† 2022. 4. 12.
728x90

[Python/λ°±μ€€] 5397 : ν‚€λ‘œκ±°

μ‹œκ°„ μ œν•œ: 1 Sec  λ©”λͺ¨λ¦¬ μ œν•œ: 256 MB

 

 

5397번: ν‚€λ‘œκ±°

첫째 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ κ°œμˆ˜κ°€ 주어진닀. 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” ν•œμ€„λ‘œ 이루어져 있고, 강산이가 μž…λ ₯ν•œ μˆœμ„œλŒ€λ‘œ 길이가 L인 λ¬Έμžμ—΄μ΄ 주어진닀. (1 ≤ L ≤ 1,000,000) 강산이가 백슀페이슀λ₯Ό μž…

www.acmicpc.net

 

문제 μ„€λͺ…

μ°½μ˜μ΄λŠ” κ°•μ‚°μ΄μ˜ λΉ„λ°€λ²ˆν˜Έλ₯Ό ν›”μΉ˜κΈ° μœ„ν•΄μ„œ 강산이가 μ‚¬μš©ν•˜λŠ” 컴퓨터에 ν‚€λ‘œκ±°λ₯Ό μ„€μΉ˜ν–ˆλ‹€. 며칠을 κΈ°λ‹€λ¦° 끝에 μ°½μ˜μ΄λŠ” 강산이가 λΉ„λ°€λ²ˆν˜Έ 창에 μž…λ ₯ν•˜λŠ” κΈ€μžλ₯Ό μ–»μ–΄λƒˆλ‹€.

ν‚€λ‘œκ±°λŠ” μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ₯Ό λˆ„λ₯Έ λͺ…령을 λͺ¨λ‘ κΈ°λ‘ν•œλ‹€. λ”°λΌμ„œ, 강산이가 λΉ„λ°€λ²ˆν˜Έλ₯Ό μž…λ ₯ν•  λ•Œ, ν™”μ‚΄ν‘œλ‚˜ 백슀페이슀λ₯Ό μž…λ ₯해도 μ •ν™•ν•œ λΉ„λ°€λ²ˆν˜Έλ₯Ό μ•Œμ•„λ‚Ό 수 μžˆλ‹€.

강산이가 λΉ„λ°€λ²ˆν˜Έ μ°½μ—μ„œ μž…λ ₯ν•œ ν‚€κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, κ°•μ‚°μ΄μ˜ λΉ„λ°€λ²ˆν˜Έλ₯Ό μ•Œμ•„λ‚΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. κ°•μ‚°μ΄λŠ” ν‚€λ³΄λ“œλ‘œ μž…λ ₯ν•œ ν‚€λŠ” μ•ŒνŒŒλ²³ λŒ€λ¬Έμž, μ†Œλ¬Έμž, 숫자, 백슀페이슀, ν™”μ‚΄ν‘œμ΄λ‹€.

μž…λ ₯

첫째 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ κ°œμˆ˜κ°€ 주어진닀. 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” ν•œμ€„λ‘œ 이루어져 있고, 강산이가 μž…λ ₯ν•œ μˆœμ„œλŒ€λ‘œ 길이가 L인 λ¬Έμžμ—΄μ΄ 주어진닀. (1 ≤ L ≤ 1,000,000) 강산이가 백슀페이슀λ₯Ό μž…λ ₯ν–ˆλ‹€λ©΄, '-'κ°€ 주어진닀. μ΄λ•Œ μ»€μ„œμ˜ λ°”λ‘œ μ•žμ— κΈ€μžκ°€ μ‘΄μž¬ν•œλ‹€λ©΄, κ·Έ κΈ€μžλ₯Ό μ§€μš΄λ‹€. ν™”μ‚΄ν‘œμ˜ μž…λ ₯은 '<'와 '>'둜 주어진닀. μ΄λ•ŒλŠ” μ»€μ„œμ˜ μœ„μΉ˜λ₯Ό 움직일 수 μžˆλ‹€λ©΄, μ™Όμͺ½ λ˜λŠ” 였λ₯Έμͺ½μœΌλ‘œ 1만큼 움직인닀. λ‚˜λ¨Έμ§€ λ¬ΈμžλŠ” λΉ„λ°€λ²ˆν˜Έμ˜ 일뢀이닀. λ¬Όλ‘ , λ‚˜μ€‘μ— 백슀페이슀λ₯Ό ν†΅ν•΄μ„œ μ§€μšΈ μˆ˜λŠ” μžˆλ‹€. λ§Œμ•½ μ»€μ„œμ˜ μœ„μΉ˜κ°€ μ€„μ˜ λ§ˆμ§€λ§‰μ΄ μ•„λ‹ˆλΌλ©΄, μ»€μ„œ 및 μ»€μ„œ 였λ₯Έμͺ½μ— μžˆλŠ” λͺ¨λ“  λ¬ΈμžλŠ” 였λ₯Έμͺ½μœΌλ‘œ ν•œ μΉΈ μ΄λ™ν•œλ‹€.

좜λ ₯

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ— λŒ€ν•΄μ„œ, κ°•μ‚°μ΄μ˜ λΉ„λ°€λ²ˆν˜Έλ₯Ό 좜λ ₯ν•œλ‹€. λΉ„λ°€λ²ˆν˜Έμ˜ κΈΈμ΄λŠ” 항상 0보닀 크닀.

μž…λ ₯ μ˜ˆμ‹œ 1

2
<<BP<A>>Cd-
ThIsIsS3Cr3t

좜λ ₯ μ˜ˆμ‹œ 1

BAPC
ThIsIsS3Cr3t

My μ½”λ“œ

# ν‚€λ‘œκ±°
# N: ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ 개수
# < μ™Όμͺ½μœΌλ‘œ ν•œ μΉΈ 이동
# > 였λ₯Έμͺ½μœΌλ‘œ ν•œ μΉΈ 이동
# - 백슀페이슀: μ»€μ„œ λ°”λ‘œ μ•žμ— κΈ€μž μ‘΄μž¬ν•œλ‹€λ©΄ μ§€μš°κΈ°

import sys

N = int(sys.stdin.readline())

for i in range(N):
    str1 = []
    str2 = []
    keys = list(sys.stdin.readline().rstrip())
    for key in keys:
        if key == '<':
            if str1:
                str2.append(str1.pop())
        elif key == '>':
            if str2:
                str1.append(str2.pop())
        elif key == '-':
            if str1:
                str1.pop()
        else:
            str1.append(key)

    print(''.join(str1 + list(reversed(str2))))
728x90

λŒ“κΈ€