문제 링크
스페이스로 띄어쓰기 된 단어들의 리스트가 주어질때, 단어들을 반대 순서로 뒤집어라. 각 라인은 w개의 영단어로 이루어져 있으며, 총 L개의 알파벳을 가진다. 각 행은 알파벳과 스페이스로만 이루어져 있다. 단어 사이에는 하나의 스페이스만 들어간다.
첫 행은 N이며, 전체 케이스의 개수이다.
N개의 케이스들이 이어지는데, 각 케이스는 스페이스로 띄어진 단어들이다. 스페이스는 라인의 처음과 끝에는 나타나지 않는다. N과 L은 다음 범위를 가진다.
각 케이스에 대해서, 케이스 번호가 x일때 "Case #x: " 를 출력한 후 그 후에 이어서 단어들을 반대 순서로 출력한다.
import sys
input = sys.stdin.readline
test_case = int(input())
for i in range(test_case):
list_ = list(input().split())
print("Case #%i: " %(i+1), end="")
for j in list_[::-1] :
print(j,end=" ")
if j != list_[0]:
print("")
import sys
input = sys.stdin.readline
test_case = int(input())
빠른 입력을 받을 수 있도록 input을 선언하고 test case의 개수를 받는다.
for i in range(test_case):
list_ = list(input().split())
print("Case #%i: " %(i+1), end="")
for j in list_[::-1] :
print(j,end=" ")
if j != list_[0]:
print("")
test case만큼 for문을 실행한다.
이때, split을 이용하여 문장을 띄어쓰기 단위로 끊어 리스트에 저장한다.
Case와 번호를 출력하고, 리스트를 거꾸로 출력한다. end= " " 를 이용하여 단어마다 띄어쓰기를 삽입하고, 만약 리스트의 맨 앞에 있는 단어와 출력해야 할 단어가 같을 경우 문장을 구분하기 위해 빈 print문을 한 번 실행한다.
단어를 뒤에서부터 꺼내긴 하지만 스택 문제라고 보긴 애매한 것 같다.