본문 바로가기
programming/baekjoon

9093 - 단어 뒤집기

by Ryuuu 2020. 8. 27.

문제

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

입력

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

출력

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

 

풀이

reverse 함수를 쓰면 더 간단하긴 하지만 스택 연습을 위해 스택을 사용하여 풀었다.

모든 문자열을 push한 수 pop해주면서 문자열을 출력해주면 된다.

 
#include<iostream>
#include<string>
#include <stack>
#include<algorithm>
using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);

	int num;
	int i;
	string str;

	stack<char> s;

	cin >> num;
	cin.ignore();

	while (num--) {
		getline(cin,str);

		for (i = 0; i <= str.length(); i++) {
			if (str[i] == ' ' || i == str.length()) {
				while (s.size()) {
					cout << s.top();
					s.pop();
				}
				cout << ' ';
			}
			else {
				s.push(str[i]);
			}
		}
		cout << '\n';
		
	}
}


'programming > baekjoon' 카테고리의 다른 글

1874 - 스택 수열  (0) 2020.08.27
9012 - 괄호  (0) 2020.08.27
10828 - 스택  (0) 2020.08.27
15650 - N과 M (2)  (0) 2020.08.27
백준 - 1260 dfs와 bfs  (1) 2020.05.21

댓글