티스토리 뷰

반응형

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

 

17413번: 단어 뒤집기 2

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

www.acmicpc.net

 


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 구현
  • 문자열

 


 

⊙ 문제 접근 과정

 

띄어쓰기를 기준으로 배열에 추가해줬다.

그렇지만 괄호 안에 있는 띄어쓰기는 무시해야 한다.

 

flag를 이용하여 괄호를 판별 해줬다.

 

나머지 코드는 전부 직접 구현했다.

 

괄호 안에 있는 텍스트는 parentheses 문자열 안에 괄호 밖에 있는 텍스트는 message 문자열 안에 넣어주었다. 그리고 message는 거꾸로 넣어주고 parentheses는 그대로 넣어주었다.

 

 


 

⊙ 문제 풀이

 

inputFirst = input()
inputString = []

first = ""

flagFirst = True

# 괄호 안에 있는 띄어쓰기는 무시하고
# 괄호 밖에 있는 띄어쓰기 인식하여 배열 넣기
for i in range(len(inputFirst)):
    if inputFirst[i] == '<':
        flagFirst = False
    elif inputFirst[i] == '>':
        flagFirst = True
    
    if inputFirst[i] == ' ' and flagFirst:
        inputString.append(first)
        first=""
    else:
        first+=inputFirst[i]
    
    if i == (len(inputFirst)-1):
        inputString.append(first)

# 배열 하나하나 검사
# 값에 괄호가 있냐없냐로 케이스 분류
for i in range(len(inputString)):
    if ('<' or '>') not in inputString[i]:
        inputString[i] = inputString[i][::-1]
    else:
        total=""
        message=""
        parentheses=""
        flag = True
        #괄호가 있다면 괄호 안에 있는 값은 거꾸로 X
        #괄호 밖에 있는 값은 거꾸로
        for j in range(len(inputString[i])):
            if inputString[i][j]== '<':
                total+=message[::-1]
                message=""
                parentheses+=inputString[i][j]
                flag = False
                continue
            elif inputString[i][j]== '>':
                parentheses+=inputString[i][j]
                flag = True
                total+=parentheses
                parentheses=""
                continue

            if flag:
                message+=inputString[i][j]
            else:
                parentheses+=inputString[i][j]

            if j == len(inputString[i])-1:
                total+=message[::-1]
        inputString[i]=total
        
#출력
print(" ".join(inputString))

 


⊙ 결과

 


⊙ 마무리

 

 

NONE

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함