알고리즘/BaekJoon

백준 9093 : 단어 뒤집기

꾸준하게 :) 2020. 3. 7. 11:45

문제 링크입니다 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