새소식

⌨️ Algorithms/백준

[Python] 백준 9093번_단어 뒤집기

2023. 1. 29. 13:11

  • -

https://www.acmicpc.net/problem/9093

 

9093번: 단어 뒤집기

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

www.acmicpc.net

 

  • 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력
  • 단, 단어의 순서는 바꿀 수 없음
  • 단어는 영어 알파벳으로만 이루어져 있음
  • 입력
    • 첫째 줄에 테스트 케이스의 개수 T가 주어짐
    • 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어짐
    • 단어의 길이는 최대 20, 문장의 길이는 최대 1000
    • 단어와 단어 사이에는 공백이 하나 있음
  • 출력
    • 각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력
  • 시간 제한: 1초
  • 메모리 제한: 128 MB

 

"""
입출력 예시)

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

            -> I ma yppah yadot
               eW tnaw ot niw eht tsrif ezirp
"""

 

 

## 의사코드 ##

# for sentence in range(t):
#     # sentence 입력 받기
#     input().split() # 공백으로 split
#     for s in sentence:
#         reversed(s) # 단어 뒤집기
#         print(''.join(reversed(s)), end=' ')

 

 

 

통과한 코드

 

import sys
t = int(input())
for sentence in range(t):
    sentence = sys.stdin.readline().split()
    for s in sentence:
        print(''.join(reversed(s)), end=' ')

-> reversed() 활용

 

 

다른 풀이

 

  • 1) 리스트 슬라이싱 활용
t = int(input())
for i in range(t):
    string = input().split()
    for j in string:
        print(j[::-1], end=' ')

-> 한 단어씩 확인

 

 

그냥 str[::-1]은 문자열 순서 뒤집기

# cf) 그냥 str[::-1]
# -> 문자열 순서 뒤집기
sentence = "We want to win the first prize"
sentence[::-1]

 

 

 

  • 2) stack 활용
t = int(input())
for i in range(t):
    string = input()
    string += " "
    stack = []
    # 한 글자씩 확인
    for j in string: 
        # 공백이 아닌 경우 stack에 append
        if j != ' ':
            stack.append(j)
        # 공백인 경우 stack이 빌 때까지 pop
        else:
            while stack:
                print(stack.pop(), end='')
            print(' ', end='')

-> 한 글자씩 확인

 

 

과정 확인

 

string = "We want to win the first prize"

"""
j: W
append된 stack: ['W']
j: e
append된 stack: ['W', 'e']
j:  
eW 
--------------------------------------------------
j: w
append된 stack: ['w']
j: a
append된 stack: ['w', 'a']
j: n
append된 stack: ['w', 'a', 'n']
j: t
append된 stack: ['w', 'a', 'n', 't']
j:  
tnaw 
--------------------------------------------------
j: t
append된 stack: ['t']
j: o
append된 stack: ['t', 'o']
j:  
ot 
--------------------------------------------------
j: w
append된 stack: ['w']
j: i
append된 stack: ['w', 'i']
j: n
append된 stack: ['w', 'i', 'n']
j:  
niw 
--------------------------------------------------
j: t
append된 stack: ['t']
j: h
append된 stack: ['t', 'h']
j: e
append된 stack: ['t', 'h', 'e']
j:  
eht 
--------------------------------------------------
j: f
append된 stack: ['f']
j: i
append된 stack: ['f', 'i']
j: r
append된 stack: ['f', 'i', 'r']
j: s
append된 stack: ['f', 'i', 'r', 's']
j: t
append된 stack: ['f', 'i', 'r', 's', 't']
j:  
tsrif 
--------------------------------------------------
j: p
append된 stack: ['p']
j: r
append된 stack: ['p', 'r']
j: i
append된 stack: ['p', 'r', 'i']
j: z
append된 stack: ['p', 'r', 'i', 'z']
j: e
append된 stack: ['p', 'r', 'i', 'z', 'e']
j:  
ezirp 
--------------------------------------------------
"""

 

 

 

 

 

참고)

 

https://codechacha.com/ko/python-reverse-string/

 

Python - 문자열 뒤집기, 문자열 거꾸로 출력

문자열을 뒤집는 방법을 소개합니다. 문자열을 뒤집는다는 의미는 다음과 같이 Original 문자열의 마지막에서 처음 순서로 출력한다는 의미입니다. slice를 이용하면 매우 쉽게 String을 뒤집을 수

codechacha.com

 

https://art-coding3.tistory.com/40

 

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

※ 사용언어 : 파이썬 ※ ▼ 문제 링크 ▼ www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주

art-coding3.tistory.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!