문제
링크
풀이
#include <cctype>
#include <iostream>
#include <string>
using namespace std;
bool cpp(const string &s) {
if (s[0] == '_' || s.back() == '_') return false;
for (char c : s) if (isupper(c)) return false;
for (int i=1; i<s.length(); i++) {
if (s[i-1] == '_' && s[i] == '_') return false;
}
return true;
}
bool java(const string &s) {
if (isupper(s[0]) || s[0] == '_' || s.back() == '_') return false;
for (char c : s) if (c == '_') return false;
return true;
}
string c2j(const string &s) {
string t = "";
for (int i=0; i<s.length(); i++) {
if (s[i] == '_') t += toupper(s[++i]);
else t += s[i];
}
return t;
}
string j2c(const string &s) {
string t = "";
for (char c : s) {
if (isupper(c)) t += '_', t += tolower(c);
else t += c;
}
return t;
}
void solve(void) {
string s; cin >> s;
if (cpp(s)) cout << c2j(s);
else if (java(s)) cout << j2c(s);
else cout << "Error!";
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
return 0;
}