문제
링크
풀이
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
void solve(const string &s) {
stringstream ss(s);
vector<string> v; string t;
while (ss >> t) v.push_back(t);
vector<int> ans;
for (int i=0; i<v.size(); i++) {
if (v[i] != "dip") continue;
if (i > 0 && v[i-1] == "jiggle") continue;
if (i > 1 && v[i-2] == "jiggle") continue;
if (i+1 < v.size() && v[i+1] == "twirl") continue;
ans.push_back(1); v[i] = "DIP";
}
if (v.size() < 3 || v[v.size()-3] != "clap" || v[v.size()-2] != "stomp" || v[v.size()-1] != "clap") ans.push_back(2);
if (s.find("twirl") != string::npos && s.find("hop") == string::npos) ans.push_back(3);
if (s.substr(0, 6) == "jiggle") ans.push_back(4);
if (s.find("dip") == string::npos) ans.push_back(5);
if (ans.empty()) {
cout << "form ok: ";
for (int i=0; i<v.size(); i++) cout << v[i] << " ";
} else if (ans.size() == 1) {
cout << "form error " << ans[0] << ": ";
for (int i=0; i<v.size(); i++) cout << v[i] << " ";
} else if (ans.size() == 2) {
cout << "form errors " << ans[0] << " and " << ans[1] << ": ";
for (int i=0; i<v.size(); i++) cout << v[i] << " ";
} else {
cout << "form errors " << ans[0];
for (int i=1; i<ans.size()-1; i++) cout << ", " << ans[i];
cout << " and " << ans[ans.size()-1] << ": ";
for (int i=0; i<v.size(); i++) cout << v[i] << " ";
}
cout << endl;
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
while (getline(cin, s)) solve(s);
return 0;
}