백준 11094 - 꿍 가라사대
문제링크
문제 접근
- 먼저, 공백을 포함한 문자열을 통째로 입력 받는다.
- stringstream 을 이용해서 공백 문자를 기준으로 처음 두 단어를 파싱한다.
- 파싱한 두 단어가 각각 “Simon”, “says” 이면 나머지 단어들을 출력한다.
의사코드(pseudo-code)
- 줄 개수 입력, n
- for i=0 to n-1:
- 문자열 입력, str
- 공백을 기준으로 앞에 두개를 파싱한다, stringstream 사용
- if first_token == "Simon" && second_token == "says":
- stringstream 에 남아있는 문자들 출력
소스코드 및 분석
전체 코드
#include <iostream>
#include <sstream>
#include <string>
int main()
{
int n = 0;
std::cin >> n;
std::getchar();
for (int i = 0; i < n; i++) {
std::string str;
std::getline(std::cin, str);
std::stringstream ss(str);
std::string first_token, second_token;
ss >> first_token;
ss >> second_token;
if (first_token == "Simon" && second_token == "says") {
std::string token;
while (ss >> token)
std::cout << " " << token;
std::cout << "\n";
}
}
}
- 입력 연산자 “»” 는 공백문자를 버퍼에 남겨두기 때문에 first_token, second_token 에 각각 파싱해서 저장하고 “Simon” 과 “says”로 시작하는지 판단한다.
- 조건에 맞는다면 stringstream 에 남아있는 단어들을 출력한다.
Leave a comment