카테고리 없음

[백준][Python] 17413. 단어 뒤집기 2

내만 2022. 8. 29. 14:32
728x90
반응형

반응형

 

 

 

 

 

 

🙆‍♂️문제


 

🙋‍♂️풀이


 

 

🚀 입력받기


string = list(input())

일단 입력된 문자열을 문자 단위 리스트 형식으로 저장합니다.

 

🚀 문제 풀이 핵심


readyOutput = []
temp=[]
br=0
for i,v in enumerate(string):
    if i == len(string)-1:
        if br != 1:
            temp.append(v)
            temp.reverse()
            readyOutput.append(temp)
            temp=[]
    if v == '<':
        if len(temp) != 0:
            temp.reverse()
            readyOutput.append(temp)
        temp = ['<']
        br=1
        continue
    if br==1:
        if v == '>':
            temp.append('>')
            readyOutput.append(temp)
            temp=[]
            br=0
        else:
            temp.append(v)
    else:
        if v == ' ':
            temp.reverse()
            temp.append(' ')
            readyOutput.append(temp)
            temp=[]
        else:
            temp.append(v)

핵심 문제 풀이 코드입니다.

 

먼저 readyOutput 리스트는 최종적으로 출력하기 위한 값을 저장하는 리스트고

temp리스트는 중간중간 문자들을 묶어서 단어로 만드는 리스트입니다.

br값은 괄호가 열린상태인지 닫힌상태인지 나타내는 변수입니다.

1일 때 괄호가 열린 것이고 0이면 닫힌 것입니다. 코드를 자세히 보면

 

    if i == len(string)-1:
        if br != 1:
            temp.append(v)
            temp.reverse()
            readyOutput.append(temp)
            temp=[]

가장 위에 마지막 값에 대한 부분을 작성해줍니다. 제일 밑에 적으면 위에서 이미 다 처리됐는데 중복 처리가 되기 때문에 가장 위에 작성했습니다.

temp에 리스트 값을 추가하고 마지막이기 때문에 마지막 단어 리스트를 역전시키고 readyOutput에 추가하는 모습입니다.

 

    if v == '<':
        if len(temp) != 0:
            temp.reverse()
            readyOutput.append(temp)
        temp = ['<']
        br=1
        continue

괄호가 열리는 입력을 받은 순간입니다.

먼저 이전 temp값이 있는지 확인을 하고 있다면 역전 시키고 출력 리스트에 저장을 한 후

temp 리스트를 < 로 초기화 시켜 괄호 단어 입력을 받습니다. 그리고 br값을 1로 만듭니다.

 

    if br==1:
        if v == '>':
            temp.append('>')
            readyOutput.append(temp)
            temp=[]
            br=0
        else:
            temp.append(v)

br값이 1인 경우 즉 괄호 단어를 입력받는 중인 경우에 괄호가 닫히는 >를 입력받게 되면 역전시키지 않고

출력 리스트에 추가한 후 temp 리스트를 초기화하는 모습입니다.

>를 입력 받는 경우가 아니라면 값을 temp리스트에 추가합니다.

 

    else:
        if v == ' ':
            temp.reverse()
            temp.append(' ')
            readyOutput.append(temp)
            temp=[]
        else:
            temp.append(v)

이 경우는 br값이 0인 경우 즉 일반적인 단어를 입력받는 경우인데 일반적인 단어들은 공백으로 구분되기 때문에 공백이 입력된다면 역전시켜준 후에 공백을 추가하고 출력 리스트에 append합니다.

그렇지 않은 경우 역시 temp 리스트에 값을 추가합니다.

 

 

 

🚀 출력하기


for i in readyOutput:
    a = "".join(s for s in i)
    print(a,end="")

출력 리스트에 있는 값들을 반복문 돌려서 출력을 합니다.

a값에 join을 사용하여 리스트 값을 문자열로 변경후 그대로 출력하면 끝입니다.

 

728x90

728x90
반응형