본문 바로가기
개발/백준 & 프로그래머스

[백준]9093번 단어 뒤집기 c/c++

by 성장하고픈개발자 2022. 7. 11.
728x90
728x90

 

문제


https://www.acmicpc.net/problem/9093

 

9093번: 단어 뒤집기

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

www.acmicpc.net

 

나의 해결방법


  • 주석으로 설명하였다.
  • 다른 분들의 풀이를 보고 해결책을 얻었다.

 

#include<iostream>
#include<stack>
#include<string>

using namespace std;

int main()
{
	int tc;
	cin >> tc; //테스트케이스 개수
	cin.ignore(); //버퍼 제거
	while (tc--) {
		string s = "";
		getline(cin, s);
		s += ' '; // 마지막 단어 뒤에 공백을 추가해줘야 마지막 단어도 st에 푸쉬해줄 수 있다.
		stack<char> st;
		for (int i = 0; i < s.size(); i++) {
			if (s[i] == ' ') {
				while (!st.empty()) {
					cout << st.top();
					st.pop();
				}
				cout << s[i]; //공백 출력
			}
			else
				st.push(s[i]);  //공백을 만날때까지 push
		}
	}
}
728x90
728x90