문제 링크입니다 https://www.acmicpc.net/problem/9093
9093번: 단어 뒤집기
문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다. 출력 각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어
www.acmicpc.net
문장이 주어졌을 때, 각 단어들을 모두 뒤집어서 출력해야 하는 문제였습니다. 스택을 이용해서 알파벳을 계속 스택에 push 하다가 공백 문자가 입력되면 출력하는 방식으로 문제를 해결했습니다.
[소스코드]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#include<cstring>
#include<cstdio>
using namespace std;
int tc, top;
char input[1010], stack[1010];
int main(void) {
scanf("%d ", &tc);
for (int t = 0; t < tc; t++) {
// fgets를 통해 공백을 포함한 문장을 입력받고
fgets(input, 1010, stdin);
// input의 처음부터 맨 끝 바로 직전까지
// 맨 끝은 '\0'이라서 무시해도 됩니다
for (int i = 0; i < strlen(input) - 1; i++) {
// 공백 문자가 아니라면 스택에 알파벳을 push
if (input[i] != ' ') stack[top++] = input[i];
// 공백 문자이거나 맨 마지막 문자를 stack에 넣었다면
if (input[i] == ' ' || i == strlen(input) - 2) {
// 스택의 담긴 알파벳들을 꺼내서 출력합니다
for (int i = top - 1; i >= 0; i--)
printf("%c", stack[i]);
printf(" ");
top = 0;
}
}
printf("\n");
}
return 0;
}
|
cs |
'알고리즘 > BaekJoon' 카테고리의 다른 글
백준 12851 : 숨바꼭질 2 (0) | 2020.03.08 |
---|---|
백준 9012 : 괄호 (0) | 2020.03.07 |
백준 10845 : 큐 (0) | 2020.03.07 |
백준 10828 : 스택 (0) | 2020.03.06 |
백준 6588 : 골드바흐의 추측 (0) | 2020.03.06 |