본문 바로가기
Algorithm/백준 알고리즘 풀이

[Baekjoon] 17413. 단어 뒤집기 2

by newnu 2021. 5. 4.
반응형

# Problem

문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다.

먼저, 문자열 S는 아래와과 같은 규칙을 지킨다.

  1. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져 있다.
  2. 문자열의 시작과 끝은 공백이 아니다.
  3. '<'와 '>'가 문자열에 있는 경우 번갈아가면서 등장하며, '<'이 먼저 등장한다. 또, 두 문자의 개수는 같다.

태그는 '<'로 시작해서 '>'로 끝나는 길이가 3 이상인 부분 문자열이고, '<'와 '>' 사이에는 알파벳 소문자와 공백만 있다. 단어는 알파벳 소문자와 숫자로 이루어진 부분 문자열이고, 연속하는 두 단어는 공백 하나로 구분한다. 태그는 단어가 아니며, 태그와 단어 사이에는 공백이 없다.

입력

첫째 줄에 문자열 S가 주어진다. S의 길이는 100,000 이하이다.

출력

첫째 줄에 문자열 S의 단어를 뒤집어서 출력한다.

 

# Solution 

S,temp = input(),""

ck = False

for i in S:
    if i ==' ':
        if not ck:
            print(temp[::-1],end=" ")
            temp=""
        else: # 괄호 안에 있으면
            print(" ",end="")
    elif i=="<":
        ck = True
        print(temp[::-1]+"<",end="")
        temp=""
    elif i==">":
        ck = False
        print(">",end="")
    else:
        if ck: # 괄호 안에 있으면
            print(i, end="")
        else: # 괄호 안이 아니면 
            temp+=i # 나중에 한번에 뒤집어 주기 위해 temp에 저장
            
print(temp[::-1])
반응형

'Algorithm > 백준 알고리즘 풀이' 카테고리의 다른 글

❗️[Baekjoon] 14620. 꽃길  (0) 2021.05.05
[Baekjoon] 16956. 늑대와 양  (0) 2021.05.04
[Baekjoon] 16675. 두 개의 손  (0) 2021.05.04
[Baekjoon] 9037. The candy war  (0) 2021.05.04
[Baekjoon] 16769. Mixing Milk  (0) 2021.05.03