반응형
문자열을 처리한 후 답을 출력하는 간단한 문제였습니다.
풀이방법
cin의 입력버퍼에는 정수 t와 \n이 들어갑니다. 이는 없어지지 않습니다. getline()에서
인자입력을 \n(default)으로 구분하기 때문에 cin의 입력버퍼를 비워줘야 됩니다.
따라서 cin.ignore()를 사용해 입력버퍼를 비워줘야 합니다.
1. test case 변수인 t를 입력받고 cin의 buffer를 비워준 뒤 한줄로 문장을 입력을 받습니다.
2. ' '를 구분하여 이루어진 문장의 각 단어를 뒤집습니다.
3. 뒤집은 결과를 출력합니다.
Code
#include <bits/stdc++.h>
using namespace std;
int t;
string getReversedWord(string word){
string reversedWord = word;
int size = reversedWord.size();
for(int i = 0; i < size/2; i++){
swap(reversedWord[i],reversedWord[size - 1-i]);
}
return reversedWord;
}
int main(){
cin >> t;
cin.ignore();
while(t--){
string sentence, ans = "";
getline(cin,sentence);
for(int pivot = 0; pivot < sentence.size(); pivot++){
string word = "";
while(sentence[pivot]!=' ' && pivot != sentence.size()){
word += sentence[pivot++];
}
word = getReversedWord(word);
ans += word + ' ';
}
cout << ans <<'\n';
}
}
'Algorithm > String' 카테고리의 다른 글
(C++) - 백준(BOJ) 12605번 : 단어순서 뒤집기 답 (0) | 2021.01.25 |
---|---|
(Python) - 백준(BOJ) 5893번 : 17배 답 (0) | 2021.01.25 |
(C++) - 백준(BOJ) 18312번 : 시각 답 (0) | 2021.01.09 |
(Python) - 백준(BOJ) 5052번 : 전화번호 목록 답 (0) | 2020.10.03 |
(Javascript) - 백준(BOJ) 11816번 : 8진수, 10진수, 16진수 답 (0) | 2020.09.26 |