문제
문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.
출력
각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.
문제 풀이
풀이 방법에는 2가지가 있다.
하나는 파이썬 문법인 reverse 혹은 인덱스 슬라이스를 이용해서 단어를 뒤집는 방법이다.
다른 하나는 전통적인 방식으로, 스택을 활용해서 문자를 뒤집는 방법이 있다.
처음에는 전자의 방법으로만 구현을 했는데, 백준 알고리즘 기초 강의 커리에 있는 문항들을 따라서 풀고 있는 만큼, 스택으로 분류되어 있는 문제라서 스택으로도 구현을 해봤다.
작성 코드
import sys
input = sys.stdin.readline
stack = []
T = int(input())
# 방법 1 - 스택 & extend
for _ in range(T):
words = input().split()
for i in words:
stack.extend(i) # append를 쓰면 'am' 문자열이 들어가지만 extend를 쓰면 'a','m' 문자 하나씩 들어감
while stack:
print(stack.pop(), end='')
print(end=' ')
print('')
# 방법 2 - 스택 & append
for _ in range(T):
words = input().strip()
words += ' '
for i in words:
if i != ' ':
stack.append(i)
else:
while stack:
print(stack.pop(), end='')
print(end=' ')
print('')
# 방법 3 - 파이썬 문법 인덱스 슬라이스 reverse 사용
for _ in range(T):
words = input().split()
for i in words:
print(i[::-1], end=' ')
print('')
'Problem Solving' 카테고리의 다른 글
[백준] 17299 - 오등큰수 in 파이썬 (0) | 2022.08.12 |
---|---|
[백준] 1406 - 에디터 in 파이썬 (0) | 2022.08.07 |
[백준] 2579 - 계단오르기 in 파이썬 (0) | 2022.08.04 |
[백준] 4949 - 균형잡힌 세상 (0) | 2022.08.04 |
[백준] 1912 - 연속합 in 파이썬 (0) | 2022.06.08 |