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; }
반응형