17413_단어뒤집기2

minjun kim·2024년 5월 3일

Check Point !
( 해당사항 ✓체크 )

막힘 없이 수월하게 풀린 문제인가?

1시간이내로 풀렸던 문제인가? ✅

1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가?

시간을 써도 도무지 풀 수 없는 문제인가?

솔루션을 찾아봤는가? ✅

난이도 체감

최상

하 ✅ (실3)

<이해도>

완벽히 이해 ✅

다소 헷갈리는 부분들이 있음

이해 못함

<덧붙일 말>
처음에 스택으로 풀어야 한다는 정도는 알았는데 구현력에서 많이 미흡했다.
stk에 append 그대로 진행하되, 진행을하며 조건에 대하여 처리하고, 끝에 input() 값에 대해
빈공간을 추가하여 설정하는것도 생각해보자

baking 스택 다시한번 보고,

문제

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

풀이


ns = input() + ' '

stk = []
res = ''
check = 0 

for i in ns:
    
    if i == '<':
        check = 1
        while stk:
            res += (stk.pop())
            
    stk.append(i)
    
    if i == '>':
        check = 0
        while stk:
            res += stk.pop(0)
    
    if check == 0 and i == ' ':
        stk.pop()
        while stk:
            res += stk.pop()
        res += ' '
print(res)

< 을 만나면
stk에 쌓은 문자열을 전부 뒤집고 stk를 빈공간으로 만들어준다.

을 만나면
안에있는 값은 전부 뒤집지 않고 정상적으로 출력한다.

하지만 띄워쓰기를 했을때 각 단어별로 뒤집어서 출력 해야하기 떄문에
check를 설정해서 해당 < 이면 1로 괄호 안에 있다고 생각하고, > 이면 0으로 괄호 밖으로 초기화 해준다.

그리고 뒤집어서 정렬하면 처음에 pop()으로 빼기때문에 빈공간이 나오는데 pop으로 먼저 빼주고,
후에 res에 빈공간을 더해주며

input()값에 처음 " " 빈공간을 추가해준다.

profile
배움의 흔적을 남기고 싶습니다.

0개의 댓글