문제
문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.
출력
각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.
풀이 과정
문자열을 탐색하다가 스페이스바를 찾으면, 거기까지가 단어 하나인 것이다.
이전에 발견한 단어가 끝난 위치를 기억해둔 뒤, 스페이스바를 새로 발견한 위치부터 마지막 단어가 끝난 위치까지 출력하여 뒤집는다. 마지막 단어는 스페이스바가 마지막에 등장하지 않으니 따로 처리해주어야 함을 유의하자.
C
#include <stdio.h>
#include <string.h>
int main(void) {
int n;
scanf("%d", &n);
getchar();
while(n--) {
char str[1005];
gets(str);
int pre = 0;
for (int i = 0; i < strlen(str); i++) {
if (str[i] == ' ') {
for (int k = i - 1; k >= pre; k--) {
printf("%c", str[k]);
}
printf(" ");
pre = i + 1;
}
}
for (int k = strlen(str) - 1; k >= pre; k--) {
printf("%c", str[k]);
}
printf("\n");
}
return 0;
}
Python
import sys
input = sys.stdin.readline
n = int(input().rstrip())
for _ in range(n):
s = list(input().rstrip().split())
for i in s:
print(i[::-1], end=' ')
print()
'-- 예전 기록 > BOJ' 카테고리의 다른 글
[ BOJ ] 2999 : 비밀 이메일 ( BRONZE 1 ) / C, Python (0) | 2023.11.25 |
---|---|
[ BOJ ] 17413 : 단어 뒤집기 2 ( SILVER 3 ) / C, Python (0) | 2023.11.25 |
[ BOJ ] 4949 : 균형잡힌 세상 ( SILVER 4 ) / C, Python (0) | 2023.11.24 |
[ BOJ ] 1316 : 그룹 단어 체커 ( SILVER 5 ) / C (0) | 2023.11.23 |
[ BOJ ] 25497 : 기술 연계마스터 임스 ( SILVER 5 ) / C, Python (0) | 2023.11.23 |