https://www.acmicpc.net/problem/17413
17413번: 단어 뒤집기 2
문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져
www.acmicpc.net
s = input()
result = ""
i = 0
while i < len(s):
if s[i] == "<":
word = s[i:s.find(">", i)+1]
elif s[i] == " ":
word = " "
else:
open_tag_index = s.find("<", i)
open_tag_index = open_tag_index if open_tag_index != -1 else len(s)
space_index = s.find(" ", i)
space_index = space_index if space_index != -1 else len(s)
word_end = min(open_tag_index, space_index)
word = s[i:word_end][::-1]
result += word
i += len(word)
print(result)
반복문으로 문자열을 돌며 문자 하나씩 접근해 나간다.
- "<" 문자를 만났을때 : ">"문자가 반드시 존재 하므로 ">"문자의 인덱스를 찾아 "<...>"를 한 덩어리로 떼어내 result 변수에 추가한다.
- 공백 문자를 만났을때 : result 변수에 공백문자를 추가한다.
- 일반 문자를 만났을때 : 뒤이어 공백문자나 "<"문자가 나오면 둘 중 가까운 인덱스를 통해 단어를 떼어내서 result 변수에 추가한다. 만약 둘 다 없으면 문자열이 끝날때까지 한 덩어리로 취급해야하므로 open_tag_indes와 space_index에 문자열 길이를 넣어준다.
'알고리즘 > 백준-파이썬' 카테고리의 다른 글
[백준] 17298번 (python 파이선) (0) | 2022.04.06 |
---|---|
[백준] 10799번 (python 파이썬) (0) | 2022.04.06 |
[백준] 10866번 (python 파이썬) (0) | 2022.04.06 |
[백준] 1158번 (python 파이썬) (0) | 2022.04.05 |
[백준] 10845번 (python 파이썬) (0) | 2022.04.05 |