반응형

[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 단어 뒤집기 (9093)
9093번: 단어 뒤집기
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는
www.acmicpc.net
[ 문제 ]
문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다.
[ 입력 ]
첫째 줄에 테스트 케이스의 개수 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 |