백준 17413 파이썬 (단어뒤집기 2)

철웅·2022년 10월 11일
0

BOJ

목록 보기
9/46

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


두 가지 문자열을 활용하여 문제를 풀었다.

result : 결과를 출력할 문자열, 괄호(<>)안의 값을 기본적으로 담는다.
stack : 괄호 밖의 값을 기본적으로 담아놓고 역순으로 result에 다시 담는다.

  1. 기본적으로 tag가 True이면 괄호안의 값을 result에 넣는다는 의미이고 False일 경우 일반 문자를 stack에 넣는 의미이다.
  2. 문자열 순회 중 '<'가 있을경우 stack에 있던 문자들을 역순으로 result에 담은 후 stack 초기화 -> 후에 result에 '<'를 추가 -> continue로 다시 반복문 수행
  3. '>' 가 있을 경우 result에 '>' 추가 -> continue로 다시 반복문 수행
  4. 공백문자를 만날 경우에는 기존에 있던 일반문자열을 뒤집어 놔야 하므로 stack에 있는 데이터를 역순으로 result에 추가하고 뒤에다 공백을 붙여준다 -> 후에 stack 초기화 -> continue로 반복문 다시 수행한다.
  5. 모든 반복문을 수행 후에 resultstack을 역순으로 출력 (<>가 나오지 않았다면 result에 값이 없을 수도 있으니까)

💻 Code

import sys
input = sys.stdin.readline

result = ""     
stack = ""      
tag = False

for i in input().rstrip():
    if (i == '<'):
        tag = True
        result += stack[::-1]
        stack = ""
        result += i
        continue
    elif(i == '>'):
        tag = False
        result += i
        continue
    elif(i == ' '):
        result += stack[::-1]
        result += " "
        stack = ""
        continue

    if tag:
        result += i
    else:
        stack += i

print(result + stack[::-1])
  • 파이썬에서 스택 자료구조는 문자열 리스트 둘 다 가능하다는 것을 알았다.
  • for i in input().rstrip() : for문 안에서 입력을 받을 수도 있었다. 역시 파이썬 최고
  • continue 빼먹지 말자 겁나 중요하다

0개의 댓글