반응형

 

#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을 같이 쓸 일 있을 때 사용!

  (참고: https://namwhis.tistory.com/entry/cin%EA%B3%BC-getline%EC%9D%84-%EA%B0%99%EC%9D%B4-%EC%82%AC%EC%9A%A9%ED%95%A0%EB%95%8C-cinignore%EC%9D%B4-%ED%95%84%EC%9A%94%ED%95%9C-%EC%9D%B4%EC%9C%A0-%EA%B8%B0%EB%A1%9D)

 

 

새롭게 알게 된 점

- while 문의 조건으로 getline()을 넣을 수 있다.

- 스트림(stream)이란 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름을 의미

  (출처: http://www.tcpschool.com/cpp/cpp_io_streamBuffer)

- stringstream은 string형을 담아주는 무언가의 느낌, getline 파라미터의 첫 번째 인자의 타입임

 

 

 

 

반응형

'알고리즘 문제 기록' 카테고리의 다른 글

14888 연산자 끼워넣기 (C++)  (0) 2022.10.12

+ Recent posts