https://www.acmicpc.net/problem/12605
문장을 입력받고, 단어 단위로 뒤집어서 출력하는 문제. 문장 전체를 입력받고, 공백을 기준으로 파싱하여 스택에 push하고 push가 끝난 후에, pop하면서 출력한다.
C++에서 문자열을 파싱하는 방법을 몰랐는데, stringstream기능을 이용하여 할 수 있다는 것을 배웠다.
(https://rank-brothers.com/831/cpp-string-tokenizing/)
#include <iostream>
#include <string>
#include <sstream>
#include <stack>
using namespace std;
int main () {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int test;
stack<string> st;
string str;
string token;
cin >> test;
cin.ignore();
for (int i = 1; i <= test; ++i) {
getline(cin, str);
stringstream sstream(str);
while(getline(sstream, token, ' ')) st.push(token);
cout << "Case #" << i << ": ";
while (!st.empty()) {
token = st.top();
st.pop();
cout << token << ' ';
}
cout << '\n';
}
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 8595번 C++ 풀이 (0) | 2022.01.04 |
---|---|
백준 9093번 C++ 풀이 (0) | 2022.01.02 |
백준 5637번 C++ 풀이 (0) | 2022.01.02 |
백준 10826번 Python 풀이 (0) | 2021.12.24 |
백준 2749번 C, C++ 풀이 (0) | 2021.12.24 |