[백준] 17413. 단어 뒤집기 2

원숭2·2022년 2월 26일
0

백준

목록 보기
49/54

문제

풀이

  1. 2개의 stack과 switch란 bool 변수를 사용함.
  2. 꺽쇠로 둘러싸인 부분은 그대로 유지되고, 아닌 부분은 뒤집어줘야 하기 때문에 stack1엔 정순, stack2엔 역순으로 넣어야 할 값을 넣어줌.
  3. switch가 True면 정순, False면 역순을 의미함.
  4. 여는 꺽쇠를 만나거나 공백이 입력될 시 stack2에 값이 존재할 경우만 뒤집어서 정순 배열에 넣어줌.
  5. 결과 출력 시 stack2에 값이 존재할 경우 뒤집어서 stack1에 붙여줌.

코드

import sys

def solution() :
    s = sys.stdin.readline().rstrip()
    stack1 = [] # forward order
    stack2 = [] # reverse order
    switch = False
    
    for s in s :
        if s == '<' :
            if stack2 :
                stack1 = stack1 + stack2[::-1]
                stack2 = []
            switch = True
            stack1.append(s)
        elif s == '>' :
            switch = False
            stack1.append(s)
        else :
            if switch == True :
                stack1.append(s)
            else :
                if s == ' ' :
                    stack1 = stack1 + stack2[::-1]
                    stack2 = []
                    stack1.append(s)
                else :
                    stack2.append(s)
    
    if not stack2 :
        print(''.join(stack1))
    else :
        print(''.join(stack1 + stack2[::-1]))
    
solution()

0개의 댓글