[백준] 9093 단어 뒤집기 파이썬 풀이

2021. 3. 25. 13:21알고리즘

※ 사용언어 : 파이썬 ※ 

 

▼ 문제 링크 ▼

www.acmicpc.net/problem/9093

 

9093번: 단어 뒤집기

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는

www.acmicpc.net

 


 

※ 파이썬은 다른 언어와 다르게 stack이 따로 구현되어있지 않다. 대신 자료형 list가 stack 형태로 만들어져 있어 list를 이용해 stack를 사용한다.

※ 해당 포스터에서는 stack의 개념으로 푼 풀이와 파이썬 list 내부에서 제공해주는 기능을 이용한 풀이가 작성되어있다.

 


 

Stack 자료 구조를 이용한 풀이

N=int(input())

for i in range(N):
    string=input()
    string+=" "
    stack=[]
    for j in string:
        if j!=" ":
            stack.append(j)
        else:
            while stack:
                print(stack.pop(), end='')
            print(' ', end='')

◇ j 값이 공백이 아닐 때는 stack에 j 값을 넣고 공백이면 stack 리스트가 빌 때까지 리스트의 내용을 출력시키도록 구현

 

◇ string += " " 코드로 입력받은 문자의 마지막에 공백을 추가하여, 마지막에 들어가는 단어도 stack 리스트에서 꺼낼 수 있도록 구현

 

◇ print() 문의 끝 값(end)을 ''로 선언하여 같은 단어가 한 글자씩 띄어서 출력되거나 줄 바꿈 되어 출력되는 걸 방지

 

◇ 단어가 전부 나오면 print() 문의 끝 값(end)을 띄어쓰기로 설정하여 단어와 단어를 구분해줌

 


 

 

List 내부에서 제공하는 기능을 이용한 풀이

N=int(input())

for i in range(N):
    string=list(input().split())
    for j in string:
        print(j[::-1], end=' ')

◇ string=list(input().split())을 이용해 입력받은 문자열을 띄어쓰기 기준(즉 단어 단위로) 잘라 리스트의 요소로 만듦

 

◇ for문을 통해 리스트를 순회하여, 리스트 요소를 [::-1] 이란 명령어를 통해 뒤집음

 

◇ print()문의 끝 값(end)을 띄어쓰기로 선언해 단어를 구분해줌