더듬이의 헬로월드

Hello, World!

알고리즘 풀이/백준,BOJ [코드플러스]

[백준/자료구조 1/C++] 9093-단어 뒤집기

더듬이 2021. 9. 2. 20:40
728x90

난이도

Bronze1


문제집 링크

https://www.acmicpc.net/workbook/view/3953

문제 링크

https://www.acmicpc.net/problem/9093


문제 해결 과정

한줄의 문자열을 입력받고, 문자 하나 하나를 검사해가며,

공백이 아니라면 스택에 넣고, 공백이라면 현재 스택의 모든 문자들을 출력하는 식으로 해결했다.

스택의 자료구조를 이용하면 쉽게 풀 수 있는 문제였다.


주의할 점

1.문자열을 입력 받을 때, 어떤 함수를 쓰는지 주의해서 불필요한 문자가 들어가지 않도록 한다.


코드

#include <iostream>
#include <string>
#include <stack>

using namespace std;

stack<char> BOJstack;
//문자를 저장할 스택 선언

void Output() {
	//스택이 빌 때까지 반복
	while (!BOJstack.empty())
	{
		cout << BOJstack.top();
		BOJstack.pop();
		//스택의 가장 위를 출력하고 pop!
	}
	cout << " ";
	//마무리
}

int main() {
	int repeat;
	cin >> repeat;

	cin.ignore();
	//cin함수를 통해 버퍼에는 \n인 줄 개행문자가 남아있음
	//getline함수 사용시 같이 들어가면 안되므로 버퍼를 비워준다.
	for (int i = 0; i < repeat; i++){
		string cmd;
		getline(cin,cmd);
		for (int j = 0; j < cmd.length(); j++)//입력받은 한줄 크기만큼 반복
		{
			if (cmd[j] == ' ')//만일 공백을 발견하면, 스택안의 문자들 출력
				Output();
			else//공백이 아니면 스택의 push
				BOJstack.push(cmd[j]);
		}
		Output();
		cout<<"\n";
		//한 싸이클이 끝나면 줄 개행
	}
}


잘못된 부분이나 오해할 수 있는 부분이 있다면 언제든지 

댓글 남겨주시기 바랍니다!

728x90