https://www.acmicpc.net/problem/17413
알고리즘
단어를 뒤집어서 출력하면 되는 문제이다. 하지만, 태그안에 있는 단어는 뒤집지 않아야 한다.
단어를 구분하는 기준은 공백과 태그이므로 이를 기준으로 코드를 구성하였다.태그가 들어오면 단어를 뒤집지 말고 출력해야 하므로 스택에 넣지않고 계속 ans에 붙여준다. flag를 설정해서 다음 단어가 태그안에 있다는 것을 표시해주고 태그가 끝나면 flag를 비활성화 해준다.공백이 나오면 stack에 있는 단어들을 ans에 붙여준다.
문제에서 문자열의 끝은 공백이 아니므로, 마지막에 한번더 스택을 검사해서 단어를 붙여준다.
코드
import sys
input = sys.stdin.readline
ans = ''
stack = []
s = input().strip()
lens = 0
flag = False
for i in range(len(s)):
if s[i] == '<':
for j in range(lens):
ans += stack.pop()
lens = 0
flag = True
ans += s[i]
elif s[i] == '>':
flag = False
ans += s[i]
elif s[i] != ' ':
if flag == True:
ans += s[i]
else:
stack.append(s[i])
lens += 1
else:
for j in range(lens):
ans += stack.pop()
ans += ' '
lens = 0
for j in range(lens):
ans += stack.pop()
print(ans)
'Koala - 17기 > 코딩테스트 심화 스터디' 카테고리의 다른 글
[백준/자바] 11478. 서로 다른 부분 문자열의 개수 (0) | 2025.02.09 |
---|---|
[BOJ/Python3] 1918번 : 후위 표기식 (0) | 2025.02.09 |
[백준/Python] 13904번: 과제 (0) | 2025.02.09 |
[백준/Python] 11659번: 구간 합 구하기4 (0) | 2025.02.02 |
[백준/Python] 1072번 게임 (0) | 2025.02.02 |