[python] 백준 17413번

hyeo71·2023년 5월 23일
0

백준

목록 보기
7/24

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

문제

소스코드

  1. 구현
import sys

stack = ""
result = ""
check = False # < > 태그 여부

for s in sys.stdin.readline().rstrip():
    if s == "<":
        check = True
        result = result + stack[::-1] + s
        stack = ""
        continue
    elif s == ">":
        check = False
        result += s
        continue
    elif s == " ":
        if check:
            result += " "
        else:
            result = result + stack[::-1] + " "
            stack = ""
        continue

    if check:
        result += s
    else:
        stack += s

print(result + stack[::-1])
  1. 스택
import sys
from collections import deque

stack = deque()
result = ""
check = False # < > 태그 여부

for s in sys.stdin.readline().rstrip():
    if s == "<":
        while stack:
            result += stack.pop()
        result += s
        check = True
        continue
    elif s == ">":
        check = False
        result += s
        continue
    elif s == " ":
        if check:
            result += " "
        else:
            while stack:
                result += stack.pop()
            result += " "
        continue

    if check:
        result += s
    else:
        stack.append(s)

print(result + "".join(stack)[::-1])

풀이

구현과 스택 두 가지 방법으로 프로그램을 작성, 알고리즘은 동일
단어와 태그에 포함되는 문자를 구별하기 위해 boolean을 사용
뒤집어야 하는 단어는 stack을 거쳐서 result에 저장
태그는 바로 result에 저장


알고리즘은 동일하지만 스택 방식에서는 stack에서 result로 데이터를 이동하는 과정에서 while(반복문)을 사용하기 때문에 구현 방식보다 시간이 걸린다고 예상됩니다.

0개의 댓글