Algorithm

백준 9093번 : 단어 뒤집기(python)

study ticket 2021. 11. 7. 00:12

문제

문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.

입력

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

출력

각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.

예제 입력 1 복사

2 I am happy today We want to win the first prize

예제 출력 1 복사

I ma yppah yadot eW tnaw ot niw eht tsrif ezirp

코드

import sys
n=int(sys.stdin.readline())
alp=[] #문자를 추가할 스택
for i in range(n): #n번만큼 반복
    alp=list(map(list,input().split())) #한번에 한줄에 입력하기위한 코드
    #이중 리스트와 pop()함수를 이용하여 문제 해결
    for j in alp: #이중 리스트를 돌려줌
        for k in range(len(j)): #이중리스트의 문자열의 길이만큼 pop함수로 뽑아내줘야됌
            print(j.pop(),end='')
        print(end=' ') #띄어쓰기를 위한 코드

코드설명

백준님의 스택 강의속 문제였기때문에 가능하면 스택내용속의 것을 이용하여 풀고 싶었다.

파이썬은 리스트자체가 스택처럼 구현할 수 있기때문에 리스트를 이용하였고, reverse함수를 이용하거나 다른 list를 생성하는 방식도 쓸수 있었지만 띄어쓰기를 기준으로 문장을 잘라 이중리스트로 입력한 후 이중리스트를 pop함수를 통해 문자를 하나씩 출력하여 문제를 해결하였다.

느낀점

- pop함수의 쓰임 이해

- 문제를 해결하며 reverse함수에 대해 제대로 이해

- 스택 개념 이해

728x90