문제 링크입니다: https://www.acmicpc.net/problem/3613
예외처리가 매우 까다로운 문제였습니다.
대표적인 예외처리는 아래와 같습니다.
1. 첫 번째 문자로 '_'나 대문자가 나오는 경우
2. '_'가 연속으로 나오는 경우
3. '_' 다음에 대문자가 나오는 경우
4. 기존에 c++라고 인식했는데 대문자가 나오는 경우
5. 기존에 java라고 인식했는데 _가 나오는 경우
6. 마지막 문자로 '_'가 나오는 경우
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
string s;
cin >> s;
bool c = false, java = false, err = false;
string result;
for (int i = 0; i < s.length(); i++)
{
if ('A' <= s[i] && s[i] <= 'Z')
{
if (!i || c)
{
err = true;
break;
}
result += '_';
result += s[i] - 'A' + 'a';
java = true;
}
else if (s[i] == '_')
{
if (!i || java || i == s.length() - 1 || s[i + 1] == '_' || ('A' <= s[i + 1] && s[i + 1] <= 'Z'))
{
err = true;
break;
}
result += s[i + 1] - 'a' + 'A';
i++;
c = true;
}
else
result += s[i];
}
if (err)
cout << "Error!\n";
else
cout << result << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 5555번 반지 (0) | 2018.10.29 |
---|---|
백준 2816번 디지털 티비 (0) | 2018.10.28 |
백준 2810번 컵홀더 (0) | 2018.10.28 |
백준 9536번 여우는 어떻게 울지? (0) | 2018.10.28 |
백준 5525번 IOIOI (0) | 2018.10.28 |