728x90
728x90
https://www.acmicpc.net/problem/9093
9093번: 단어 뒤집기
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는
www.acmicpc.net
난이도: solved.ac 브론즈 5
stack이라는 이름의 문자열을 이용해 단어를 담아주었는데,
단어의 길이는 최대 20이라서 21칸짜리로 선언하였다
그리고 스택의 top부터 꺼내면 입력과 거꾸로 된 형태로 출력할 수 있다는 스택의 성질을 이용하였다
scanf 특성 때문인지 visual studio에서는 실행이 제대로 안되길래
dev c++로 실행해 보니 제대로 실행되었다
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#define MAX_LEN 1001
int main() {
int T, t, i, j; // T: 테스트 케이스
scanf("%d ", &T);
char string[MAX_LEN];
char stack[21];
int top = 0, len;
for (t = 0; t < T; t++) {
fgets(string, MAX_LEN, stdin);
len = strlen(string);
for (i = 0; i < len - 1; i++) {
/* strlen(string) - 1까지인 이유 : 문자열 끝에는 '\0'이 들어가므로 */
if (string[i] != ' ')
stack[top++] = string[i];
if (string[i] == ' ' || i == len - 2) {
/* 빈칸(띄어쓰기)이거나 마지막 글자일 때 */
for (j = top - 1; j >= 0; j--)
printf("%c", stack[j]);
printf(" ");
top = 0;
}
}
printf("\n");
}
return 0;
}
반응형