본문 바로가기
ALGORITHM/BAEKJOON

[BOJ/Python] 17413. 단어 뒤집기 2

by 안녕나는현서 2021. 8. 16.
728x90

📌 문제

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

 

17413번: 단어 뒤집기 2

문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져

www.acmicpc.net

 

📌 문제 접근 방법

  1. 첫 번째 풀이에서 분명 예제도 다 맞았고 생각나는 반례도 없는데 자꾸 틀렸다고 뜬다..ㅠㅅㅠ
    • 아마도 split에서 뭔가 공백이 사라지는 걸까..?라는 짐작뿐.....
    • 누가 제발 이게 왜 틀렸는지 알려주세요... 수정해서 완성시키고 싶다고요ㅠㅠㅠㅠㅠ

 

📌 코드

- 첫 번째 풀이

import sys

S = sys.stdin.readline().strip()

start = 0
end = len(S)
temp = S

while temp != '_'*len(S):
    if '>' in temp:
        start = temp.find('>', start) + 1
        end = temp.find('<', start)
        if end == -1 :
            end = len(S)
        
    words = list(S[start:end].split())
    reverse = ''

    for word in words:
        reverse += word[::-1] + ' '

    S = S.replace(S[start:end], reverse.rstrip())
    temp = temp.replace(temp[:end], '_'*end)

print(S)

 

- 두 번째 풀이

import sys

S = sys.stdin.readline().strip()

reverse = True
answer = ''
temp = ''
i = 0

while i < len(S):
    if S[i] == '<':
        reverse = False
    elif S[i] == '>':
        reverse = True
    
    if reverse:
        if S[i] == '>':
            answer += S[i]
        elif S[i] != ' ':
            temp += S[i]
        else:
            answer += temp[::-1] + S[i]
            temp = ''
    else:
        answer += S[i]
    
    if i+1 == len(S) or S[i+1] == '<':
        answer += temp[::-1]
        temp = ''
    
    i += 1
    
print(answer)

 

 

728x90

'ALGORITHM > BAEKJOON' 카테고리의 다른 글

[BOJ/Python] 10989. 수 정렬하기 3  (0) 2021.08.18
[BOJ/Python] 2750. 수 정렬하기  (0) 2021.08.18
[BOJ/Python] 1120. 문자열  (0) 2021.08.16
[BOJ/Python] 4949. 균형잡힌 세상  (0) 2021.08.09
[BOJ/Python] 18258. 큐2  (0) 2021.08.09

댓글