백준 17413 문제 풀이 python
https://www.acmicpc.net/problem/17413
🐒 문제
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다.
먼저, 문자열 S는 아래와과 같은 규칙을 지킨다.
알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져 있다.
문자열의 시작과 끝은 공백이 아니다.
'<' '>'가 문자열에 있는 경우 번갈아가면서 등장하며, '<'이 먼저 등장한다. 또, 두 문자의 개수는 같다.
태그는 '<'로 시작해서 '>'로 끝나는 길이가 3 이상인 부분 문자열이고, '<'와 '>' 사이에는 알파벳 소문자와 공백만 있다. 단어는 알파벳 소문자와 숫자로 이루어진 부분 문자열이고, 연속하는 두 단어는 공백 하나로 구분한다. 태그는 단어가 아니며, 태그와 단어 사이에는 공백이 없다.
-
첫째 줄에 문자열 S가 주어진다. S의 길이는 100,000 이하이다.
-
첫째 줄에 문자열 S의 단어를 뒤집어서 출력한다.
입력 예시
<problem>17413<is hardest>problem ever<end>
출력 예시
<problem>31471<is hardest>melborp reve<end>
✍ 나의 풀이
s = input()
flip = []
output = []
count = 0
for _ in s:
if s[count] == '<':
if len(flip) > 0 :
for i in flip[::-1]:
output.append(i)
output.append(s[count])
flip = []
count += 1
while True:
output.append(s[count])
count += 1
if output[-1] == '>':
break
elif s[count] == ' ':
for i in flip[::-1]:
output.append(i)
output.append(s[count])
flip = []
count += 1
else:
flip.append(s[count])
count += 1
if count == len(s):
for i in flip[::-1]:
output.append(i)
break
print(''.join(output))
30분 +15분이 걸린 문제.
꺽쇠 내의 내용을 제외하고 문자열을 뒤집어야하는데 방법이 잘 안떠올랐다.
검색을 하다가 스택을 이용하면 좋을 것 같아서 다시 문제에 도전했다.
꺽쇠 안의 내용은 그대로 output 스택에 넣는다.
뒤집혀야할 문자열은 띄어쓰기나 꺽쇠가 등장할때까지 flip스택에 담는다.
띄어쓰기나 꺽쇠가 등장하면 flip안의 내용을 output스택에 전부 넣는다.
정답은 맞췄지만 코드가 다른사람들 보다 길고 지저분한 것 같아서 한번 다시 고쳐봐야겠다.
Author And Source
이 문제에 관하여(백준 17413 문제 풀이 python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mauserne/백준-17413-문제-풀이-python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)