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
'알고리즘 풀이 > 백준,BOJ [코드플러스]' 카테고리의 다른 글
[백준/자료구조 1/C++] 1874 - 스택 수열 (0) | 2021.09.27 |
---|---|
[백준/자료구조 1/C++] 1406-에디터 (0) | 2021.09.14 |
[백준/자료구조 1/C++] 9012-괄호 (0) | 2021.09.04 |
[백준/자료구조 1/C++] 10828-스택 (0) | 2021.09.02 |