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

인지용·2025년 2월 17일
0

알고리즘

목록 보기
44/46
post-thumbnail

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

import sys

# with open("./data.txt", "r") as file:
#     def input():
#         return file.readline().strip()
    
def input():
    return sys.stdin.readline().strip()

S = input()
isTag = False
stack = []
str = ""

# 정상 출력해야 하는 경우
# ㄴ 태그 안에 있을 때

# 반대 출력 할 때
# ㄴ 태그 밖에 있을 때

# 언제 출력?
# 공백, 닫힘 태그, 열림 태그, 맨 마지막

for i in range(len(S)):
    
    if(S[i] == "<"):
        if(isTag == False):
            for a in range(len(stack)):
                str += stack.pop()

        isTag = True
        stack.append(S[i])
        
    elif(S[i] == " "):
        if(isTag == False):
            for a in range(len(stack)):
                str += stack.pop()
        
            str += S[i]
        else:
            stack.append(S[i])
    elif(S[i] == ">"):
        for a in range(len(stack)):
            str += stack[a]
            
        stack = []
        isTag = False
        str += S[i]

    elif(i == len(S)-1):
        stack.append(S[i])

        if(isTag == False):
            for a in range(len(stack)):
                str += stack.pop()
        else:
            for a in range(len(stack)):
                str += stack[a]
    else: 
        stack.append(S[i])
        
print(str.strip())

언제 출력해야 하는지, 언제 뒤집지않고 출력하는지 기준을 정하고

현재가 태그인지 아닌지 판단을 위한 플래그를 하나 놓았다.

그리고 플래그 값에 따라 맞게 출력 해준다.

// 뭔가 코드가 지저분하네..
profile
한-줄

0개의 댓글