알고리즘/BOJ

백준 3613번 Java vs C++

꾸준함. 2018. 10. 28. 14:53

문제 링크입니다: 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