본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬]3613번 Java vs C++

by 현장 2021. 9. 17.

-코드

s = input()
r = ''
if '_' in s:
    flag = 0
    if s[0] == '_' or s[-1] == '_' or '__' in s:
        r = 'Error!'
    else:
        for i in s:
            if i.isupper():
                r = 'Error!'
                break
            if i == '_':
                flag = 1
                continue
            if flag == 1:
                r += i.upper()
                flag = 0
                continue
            r += i
else:
    if s[0].isupper():
        r = 'Error!'
    else:
        for i in s:
            if i.isupper():
                r += '_' + i.lower()
                continue
            r += i
print(r)

처음에 입력을 input(). split('_')로 받아서 처리하려 했으나 이렇게 하면 대문자로 바꿀 경우 문제가 생겨서 input으로 입력을 받고 _가 문자열에 있을 경우와 없을 경우로 if문으로 설정을 하였습니다.

그리고 문자열에 _가 있을 경우 대문자로 바꿔줘야 하는데 이 부분을 어떻게 해야 할지 몰라서 찾아보니 그냥 flag를 이용하여 해결을 하면 되어서 허탈하게 해결하였고, 대문자 부분과 반대로 소문자로 바꾸는 부분은 쉬워서 코딩을 하여 제출했습니다.

하지만 실패해서 찾아보니 자바로 바꿀 때, _가 처음이나 끝에 있는 경우와 __가 들어가는 경우와 c++로 바꿀 때는 처음 영어가 대문자 일 경우를 생각하지 않아서 틀린 거여서 다시 코딩을 하고 제출하였으나 또 틀려서 코드를 읽어보니 Error를 print로 해서 잘못하면 출력이 2개가 나오게 되어서 틀린 거라 이 부분도 해결을 하였습니다.