단어 뒤집기
문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.
출력
각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.
예제 입력 1
2
I am happy today
We want to win the first prize
예제 출력 1
I ma yppah yadot
eW tnaw ot niw eht tsrif ezirp
정답 코드
import sys
# 테스트 케이스의 수를 입력 받음
N = int(input())
# 각 테스트 케이스에 대해 반복
for _ in range(N):
# 입력 문자열을 읽고, 공백을 제거한 후 리스트로 변환
string = list(input().strip())
# 인덱스와 결과 리스트를 초기화
i = 0
result = []
# 문자열을 처리하기 위한 무한 루프
while 1:
# 현재 문자가 공백인지 확인
if string[i] == ' ' :
# 공백을 결과 리스트에 추가
result.append(" ")
# 현재 위치부터 마지막 공백 또는 문자열의 시작까지 문자를 거꾸로 추가
for a in range(i-1, -1, -1):
if string[a] == ' ':
break
result.append(string[a])
# sys.stdout.write(string[a])
# 문자열의 끝에 도달하지 않은 경우, 다음 문자로 이동
if (i + 1) != len(string):
i += 1
else:
# 문자열의 끝에 도달한 경우, 마지막 단어 처리
i += 1
result.append(" ")
for a in range(i-1, -1, -1):
if string[a] == ' ':
# sys.stdout.write(" ")
break
result.append(string[a])
# sys.stdout.write(string[a])
break
# 결과 리스트의 첫 번째 요소가 공백인 경우 제거
if result[0] == " ":
del result[0]
# 결과 리스트를 문자열로 변환하여 출력
result = ''.join(result)
print(result)
정신없이 코드를 짜느라 맘에 들지 않는 코드 대충봐도 뭔가 효율적이지 않다
https://www.acmicpc.net/problem/9093
'백준' 카테고리의 다른 글
2024.7.19 백준(Python) 2941 크로아티아 알파벳 (0) | 2024.07.19 |
---|---|
2024.7.18 백준(Python) 10813 공 바꾸기 (0) | 2024.07.18 |
2024.7.8 백준(Python) 10828 스택 (0) | 2024.07.08 |
2024.7.8 백준(Python) 11653 소인수분해 (0) | 2024.07.08 |
2024.7.8 백준(Python) 1934 최소공배수 (0) | 2024.07.08 |