문제
문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.
입력
첫째 줄에 테스트 케이스의 개수 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 |
댓글