Python/online judge
백준 [9093.단어 뒤집기] | Python
구름솜:D
2024. 2. 16. 13:01
728x90
✏️ 문제
https://www.acmicpc.net/problem/9093
9093번: 단어 뒤집기
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는
www.acmicpc.net
✏️ 풀이방법
1. sentence에 리스트로 각 문자열을 담는다.
2. 리스트의 원소 하나씩 거꾸로 출력한다.
📌 코드.1
-문자열 슬라이싱을 활용한 풀이
t = int(input())
sentence = [list(map(str,input().split())) for _ in range(t)]
for i in range(t):
resentence = []
for j in range(len(sentence[i])):
resentence.append(sentence[i][j][::-1])
print(resentence)
📌 코드.2
-reserved()를 활용한 풀이
t = int(input())
sentence = [list(map(str,input().split())) for _ in range(t)]
for i in range(t):
resentence = []
for j in range(len(sentence[i])):
resentence.append(''.join(list(reversed(sentence[i][j]))))
print(*resentence)
#입력
2
I am happy today
We want to win the first prize
#출력
I ma yppah yadot
eW tnaw ot niw eht tsrif ezirp
📌 결과
#입력
2
I am happy today
We want to win the first prize
#출력
I ma yppah yadot
eW tnaw ot niw eht tsrif ezirp
🤔 시행착오.1
t = int(input())
sentence = [list(map(str,input().split())) for _ in range(t)]
for i in range(t):
resentence = []
for j in range(len(sentence[i])):
resentence.append(sentence[i][j].reverse())
print(resentence)
resentence.append(sentence[i][j].reverse())
^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'reverse'
- reverse로도 풀 수 있을 까 해서 시도했는데 reverse는 리스트 메소드인데 문자열에 적용하려고해서 에러 발생
🤔 시행착오.2
t = int(input())
sentence = [list(map(str,input().split())) for _ in range(t)]
for i in range(t):
resentence = []
for j in range(len(sentence[i])):
resentence.append(reversed(sentence[i][j]))
print(resentence)
[<reversed object at 0x000001AAB502D4E0>, <reversed object at 0x000001AAB502D4B0>, <reversed object at 0x000001AAB502D510>, <reversed object at 0x000001AAB502D540>]
[<reversed object at 0x000001AAB502D4E0>, <reversed object at 0x000001AAB502D4B0>, <reversed object at 0x000001AAB502D510>, <reversed object at 0x000001AAB502D540>, <reversed object at 0x000001AAB502D570>, <reversed object at 0x000001AAB502D5A0>, <reversed object at 0x000001AAB502D5D0>]
- reversed함수는 이터레이터를 반환해서 주소를 반환
t = int(input())
sentence = [list(map(str,input().split())) for _ in range(t)]
for i in range(t):
resentence = []
for j in range(len(sentence[i])):
resentence.append(list(reversed(sentence[i][j])))
print(resentence)
[['I'], ['m', 'a'], ['y', 'p', 'p', 'a', 'h'], ['y', 'a', 'd', 'o', 't']]
[['e', 'W'], ['t', 'n', 'a', 'w'], ['o', 't'], ['n', 'i', 'w'], ['e', 'h', 't'], ['t', 's', 'r', 'i', 'f'], ['e', 'z', 'i', 'r', 'p']]
- reversed함수는 이터레이터를 반환해서 주소를 반환하니 이를 리스트로 출력
- 원소를 문자열로 출력하기 위해서 join을 사용해서 리스트 안의 원소를 문자열로 출력
🔎 다른풀이
n = int(input())
for i in range(n):
word = input()
word += ' ' #문자열 맨 마지막에 공백 추가
stack = []
for j in word:
if j != ' ':
stack.append(j)
print(stack)
else:
while stack:
print(stack.pop(), end = '')
print(' ', end = '')
- stack자료구조로 마지막 문자부터 하나씩 꺼내서 출력
📒 다시보기
[Python] 13. reverse()메소드와 reversed()함수
reverse() 메소드 reverse()는 메소드로 특정 자료(리스트)에 대해 요소를 역순으로 뒤집어 주는 기능을 수행 메소드는 반환값이 없기 때문에 기존 객체(리스트)의 요소를 역순으로 뒤집어 저장 ex_list
somin0416.tistory.com