Java를 좋아하는 사람과 C++를 좋아하는 사람은 어느 언어가 더 나은지를 놓고 자주 논쟁을 벌인다. 그 논쟁거리 중 하나가 여러 단어로 이루어진 변수명을 표기하는 방식이다. 두 언어는 다음과 같이 서로 다른 규칙을 사용한다.
javaIdentifier, longAndMnemonicIdentifier, name, hELLO_)로 구분한다. 예: c_identifier, long_and_mnemonic_identifier, name, h_e_l_l_o변수명 하나가 주어지면, 그것이 어떤 방식인지 판별한 뒤 다른 방식으로 바꾸는 프로그램을 작성하자. 즉, C++ 방식이면 Java 방식으로, Java 방식이면 C++ 방식으로 변환한다. 변환 과정에서 단어의 순서는 그대로 유지된다.
올바른 C++ 방식 변수명은 밑줄로 시작하거나 끝나서는 안 되고, 밑줄이 연속으로 나와서도 안 된다(모든 밑줄은 두 단어 사이를 구분해야 한다). 올바른 Java 방식 변수명은 밑줄이 없어야 하고 첫 글자가 소문자여야 한다. 주어진 변수명이 Java 방식도 C++ 방식도 아니라면 오류를 출력한다.
첫째 줄에 변수명이 주어진다. 변수명은 영어 알파벳과 밑줄(_)로만 이루어져 있으며, 길이는 100 이하이다.
주어진 변수명이 Java 방식이면 C++ 방식으로 바꿔 출력한다. C++ 방식이면 Java 방식으로 바꿔 출력한다. 둘 다 아니라면 Error!를 출력한다.