반응형
[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 단어 뒤집기 (9093)
[ 문제 ]
문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.
[ 입력 ]
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다.
[ 출력 ]
각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다.
[ 코드 1 ]
#include<iostream>
#include<string>
using namespace std;
class Stack {
public:
char stack[1000];
int size;
Stack() { size = 0; }
void Push(char data) {
stack[size] = data;
size += 1;
}
char Pop() {
if (!empty())
{
stack[size - 1] = 0;
size -= 1;
return stack[size];
}
}
bool empty() {
if (size == 0)
{
return true;
}
else
{
return false;
}
}
char top() {
if (!empty())
{
return stack[size - 1];
}
}
};
int main() {
int T; // 테스트 케이스 개수
cin >> T;
cin.ignore(); // getline을 쓰기 위해
Stack s; // 객체 생성
while (T--)
{
string str; // 문자열 입력
getline(cin, str); // string 클래스의 getline() 실행
str += '\n';
for (int i = 0; i < str.length(); i++)
{
if (str[i] == ' ' || str[i] == '\n') // 만약 해당 문자가 공백 또는 \n이라면
{
while (!s.empty())
{
cout << s.top();
s.Pop();
}
cout << ' ';
}
else if (str[i] != ' ') // 만약 해당 문자가 공백이 아니라면
{
s.Push(str[i]);
}
}
cout << '\n';
}
return 0;
}
[ 코드 2 ]
#include<iostream>
#include<string>
#include<stack> // 스택 부분 추가
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
// 이 두 줄을 통해, cin/cout을 scanf/printf만큼 빠르게 사용할 수 있도록 한다.
int T; // 테스트 케이스 개수
cin >> T;
cin.ignore(); // getline을 쓰기 위해
while (T--)
{
string str; // 문자열 입력
getline(cin, str); // string 클래스의 getline() 실행
str += '\n';
stack<char>s; // 스택 부분 <char>형으로 변환
for (int i = 0; i < str.length(); i++)
{
if (str[i] == ' ' || str[i] == '\n') // 만약 해당 문자가 공백 또는 \n이라면
{
while (!s.empty())
{
cout << s.top();
s.pop();
}
cout << ' ';
}
else if (str[i] != ' ') // 만약 해당 문자가 공백이 아니라면
{
s.push(str[i]);
}
}
cout << '\n';
}
return 0;
}
* 유의사항 - 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다. - 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다. - 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :) |
반응형
'문과 코린이의, [C. C++] 기록 > C++ 백준 문제풀이' 카테고리의 다른 글
[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 에디터 (1406) (0) | 2021.07.08 |
---|---|
[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 스택 수열 (1874) (0) | 2021.07.08 |
[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 스택 (10828) (0) | 2021.07.06 |
[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 다이얼 (5622) (0) | 2021.06.30 |
[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 상수 (2908) (0) | 2021.06.30 |