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