한 걸음씩

[백준][python] 9093 단어 뒤집기 본문

BOJ

[백준][python] 9093 단어 뒤집기

winter17 2023. 1. 24. 21:18

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

 

9093번: 단어 뒤집기

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

www.acmicpc.net

풀이 과정 1

1. 입력받은 수만큼 for loop이 돌아가고

2. for loop 안에서 공백으로 구분해서 문자가 입력받아지고

3. 하나하나 뒤집어서 출력하면 된다

T = int(input())
for t in range(T):
    sen = input().split()
    for s in range(len(sen)):
        new = "".join(reversed(sen[s]))
        print(new, end=" ")

4. 문자열을 뒤집는 방법은 여러 가지가 있는데 [::-1]처럼 리스트를 사용하는 방법과 위의 방법처럼 reversed를 사용하는 방법이 있다

🔆 join은 split과 반대 역할을 하는 함수다! 문자열 합치기와 문자열 나누기!

풀이 과정 2

1. for loop range에서 테스트 케이스를 입력받고

2. 주어진 문장을 입력한다 (sen)

3. 그 다음 for loop을 돌리는데 sen길이를 range범위로 잡고 [::-1] 문자열 슬라이싱으로 하나하나 뒤집어 준다음 출력하는데 

기본적으로 개행이 들어가있기 때문에 end 함수를 사용해서 한줄로 출력해줘야한다

4. print() << 이 부분은 문장간의 개행을 위해서!

for i in range(int(input())):
    sen = input().split()
    # print(sen) ['I', 'am', 'happy', 'today']
    for i in range(len(sen)):
        print(sen[i][::-1], end=" ")
    print()

리뷰

첫 번째 시도 )

문자열을 하나하나 뒤집는 거에서 살짝 멈칫했지만 구글링으로 뒤집는 방법을 검색해서 풀었다!

다시 한번 풀어보는 게 좋을 것 같다

두 번째 시도 )
첫 번째 시도 때 사용한 join함수는 문제 풀 때 자주 사용하는 함수가 아니라서 두 번째 시도 때 생각을 못했다
reverse() 함수로 뒤집으려고 했는데 list 함수라서 'str' object has no attribute 'reverse' 에러 발생

결국은 reversed 함수를 사용하거나 리스트 슬라이싱을 해줘야해서 슬라이싱으로 풀었긴했지만 시간이 좀 걸렸다..