반응형
#include <iostream>
#include <sstream>
#include <string>
#include <stack>
using namespace std;
// 입력된 문장을 단어 별로 뒤집은 문장으로 반환하는 함수
string makeInverseWord(string input) {
stringstream ss(input); //getline에 쓰기 위해 스트림으로 담음
string nowInput;
string result = "";
while(getline(ss, nowInput, ' ')) {
stack<char> stk; //스택의 후입선출 특징을 이용하기 위해 스택 사용!
for (int idx = 0; idx < nowInput.length(); idx++) {
stk.push(nowInput[idx]);
}
for (int idx = 0; idx < nowInput.length(); idx++) {
result += stk.top();
stk.pop();
}
result += " ";
}
return result;
}
int main() {
int T;
cin >> T;
cin.ignore(); //핵심! cin과 getline이 같이 쓰일 일이 있을 때 사용
for (int t = 0; t < T; t++) {
string input;
getline(cin, input);
cout << makeInverseWord(input) << endl;
}
}
내가 생각하는 이 문제의 핵심
- stack : 후입선출!
- stringstream : getline에 사용됨
- cin.ignore() : cin과 getline을 같이 쓸 일 있을 때 사용!
새롭게 알게 된 점
- while 문의 조건으로 getline()을 넣을 수 있다.
- 스트림(stream)이란 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름을 의미
(출처: http://www.tcpschool.com/cpp/cpp_io_streamBuffer)
- stringstream은 string형을 담아주는 무언가의 느낌, getline 파라미터의 첫 번째 인자의 타입임
반응형
'알고리즘 문제 기록' 카테고리의 다른 글
14888 연산자 끼워넣기 (C++) (0) | 2022.10.12 |
---|