본문 바로가기

PS

[PS] (백준 9093번) 단어 뒤집기 C++ : 공백 포함 문자열 입력 받기

전체 코드는 가장 하단에 있습니다 ~

어렵지 않은 문제다

내가 벌써 브론즈 문제를 쉽게 푸는 여자가 되었다니 ... 감격스럽다 .

 

후입선출 구조인 스택을 이용한다면 쉽게 해결할 수 있다

살짝 까다롭다고 느꼈던건 문자열 입력 때문이었다

 

대부분 입력시 사용하는 cin 은 공백 기준으로 끊기기 때문에 공백이 포함된 긴 문장 하나를 입력 받을때는 사용하기에 부적절하다

그럼 뭘 쓰지 ...?

 

string getline

string 라이브러리에 속해 있으므로 #include <string> 이 필요

 

첫번째 인자 - 입력 스트립 객체, cin 을 넣어 표준 입력으로 사용

두번째  인자 - string 변수의 시작점

세번째 인자 - 제한자 or 구분 문자

 

cin.ignore();
getline(cin, str, '\n');

.ignore() 은 cin 으로 입력 받은 후 버퍼에 남아있는 \n 을 지워주는 것

 

 

전체 코드

#include <iostream>
#include <stack>
#include <string>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(nullptr);

	int T;
	cin >> T;
	cin.ignore();

	for (int i = 0; i < T; i++) {
		string str;
		stack<char> stk;
		getline(cin, str, '\n');

		int j = 0;
		while (str[j]) {

			if (str[j] != ' ') {
				stk.push(str[j]);
			}

			else {
				while (!stk.empty()) {
					cout << stk.top();
					stk.pop();
				}
				cout << " ";
			}
			j++;
		}
		
		while (!stk.empty()) {
			cout << stk.top();
			stk.pop();
		}
		cout << " ";
		cout << "\n";
	}

}

'PS' 카테고리의 다른 글

[PS] (백준 1080번) 행렬 C++  (0) 2024.05.22
[PS] (백준 10815번) 숫자카드 C++ map  (0) 2024.05.13
[PS] (백준 2840번) 행운의 바퀴 C++  (0) 2024.05.08