[9093] 백준 알고리즘 : 단어 뒤집기(C++)
확실히 경험이 적다보니,
한 문제, 한 문제마다 고비인 것 같다.ㅜㅜ(꾸준히 하다보면 나아지겠지?
문제만 봤을때엔 크게 어려워보이지 않았었다.
getline()을 통해서 한 줄씩 문자열을 입력받고,
이 문자열을 stringstream을 이용해 단어별로 끊은 후, SWAP하듯이 바꾼 후 출력!
단순히,
이런 함수를 만들어서 하려고 했으나
visualstudio에서는 잘 되었던 코드가
채점 하면 계속
출력 형식이 잘못되었습니다. 라는 메시지가 떴다ㅜㅜ
[결론]
아무래도 swap하는 부분에서 오류가 있는 것 같아서,
algorithm 라이브러리 안에있는 reverse()를 그냥 가져다 쓰기로 하였다.
reverse(start, end);
- start~end전 까지 역순으로
#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;
int main()
{
int t = 0;
cin >> t;
cin.ignore(256, '\n');
for (int i = 0; i < t; i++)
{
string str, temp;
getline(cin, str);
stringstream ss(str);
while (ss >> temp)
{
reverse(temp.begin(), temp.end());
cout << temp << " ";
}
cout << "\n";
}
return 0;
}
입력받을때, 주의할 점은
cin.ignore(); 을 해 주지 않는다면.. 입력이 제대로 되지 않는다.
엔터가 cin의 버퍼에 남아서 getline을 소모하기 때문이다.
따라서 꼭 버퍼를 비워주어야 한다.ㅎㅎ
진짜.. 이정도면 인간승리인듯 ㅎ :)
(그냥 가져다 쓸걸..ㅜ)
역시.. 일단 reverse라는 것이 제공되는 라이브러리가 있다는 것을 몰라서 생긴 문제인 것 같다..
앞으로 열공하자 ㅜㅜ
9093번: 단어 뒤집기
문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다. 출력 각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어
www.acmicpc.net