백준 9093 단어 뒤집기 (C++)

REASON·2022년 9월 28일
0

알고리즘

목록 보기
15/20

백준 9093 단어 뒤집기

문제

문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.

풀이 코드

#include <bits/stdc++.h>
using namespace std;

vector<string> split(string s, string delimiter){
	string token = "";
	int pos;
	vector<string> str;
	while( (pos = s.find(delimiter)) != string::npos ){
		token = s.substr(0, pos);
		reverse(token.begin(), token.end());
		token += " ";
		str.push_back(token);
		s.erase(0, pos + 1);
	}
	
	reverse(s.begin(), s.end());
	str.push_back(s);
	return str;
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	int n;
	cin >> n;
	
	string bufferflush;
	getline(cin, bufferflush);
	
	while(n--){
		
		string s;
		getline(cin, s);
		
		vector<string> s2 = split(s," ");
		
		for(auto i : s2){
			cout << i;
		}
		
		cout << "\n";

	}

	return 0;
}

getline으로 여러번 입력 받는 방법을 몰라서 못 풀고 있었는데 감사하게도 버퍼 플러쉬를 쓰면 된다고 큰돌님이 알려주셨다!..

처음에는 getline으로 여러번 받는 것이 안돼서 구글링 해서 찾아보니 cin.ignore() 를 사용해야 된다는 걸 보고 이걸 썼었는데, n번 입력은 잘 받아지지만 문제는..... 두번째 문자열부터 앞 글자가 하나씩 빠진 채로 출력이 되는 문제가 있었다.
버퍼 플러쉬를 쓰니 원하는 대로 출력이 되어 제출한 문제!

c++은 split이 없어서 split 함수를 구현해서 reverse 시킨 vector를 사용해서 풀었다.

어려운 문제는 아닌데 버퍼 플러쉬를 몰라서 제출을 못하고 있었다. ㅋㅋㅋ 버퍼 플러쉬 메모메모..!

0개의 댓글