BOJ: 9093 단어 뒤집기

최대 1 분 소요

문제

문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.

입력

첫째 줄에 테스트 케이스의 개수 \(T\)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 \(20\), 문장의 길이는 최대 \(1000\)이다. 단어와 단어 사이에는 공백이 하나 있다.

출력

각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.

예제 입력 1

2
I am happy today
We want to win the first prize

예제 출력 1

I ma yppah yadot
eW tnaw ot niw eht tsrif ezirp


코드

#include <bits/stdc++.h>

using namespace std;

int main(void) {
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    int t;
    char str[1001];

    cin>>t;

    cin.ignore(numeric_limits<streamsize>::max(), '\n');

    for(int i=0; i<t; i++) {
        int k = 0;
        int lastIndex = -1;
        int currentIndex = 0;

        cin.getline(str, 1001);

        while(str[k] != '\0') {
            if((str[k+1] == ' ') || (str[k+1] == '\0')) {
                currentIndex = k;

                for(int j=currentIndex; j>lastIndex; j--)
                    cout<<str[j];

                cout<<' ';

                lastIndex = k+1;
            }
            k++;
        }

        cout<<'\n';
    }
        
    return 0;
}

Reference

BOJ

태그:

카테고리:

업데이트:

댓글남기기