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

업데이트:



문제 정보


풀이

문제

식별자 표기법이 Java(camelCase)인지 C++(snake_case)인지 판별하고 서로 변환하는 문제입니다. 잘못된 입력은 Error!를 출력합니다.

코드

s=input()
def conv(s):
    m,r,t='','',False
    for c in s:
        if ord(c) in range(ord('A'),ord('Z')+1):
            if m=='J':return''
            m='C'
            r+='_'+chr(ord('a')+ord(c)-ord('A'))
            continue
        elif c=='_':
            if m=='C':return''
            m='J'
            t=True
            continue
        if t and c=='_':return ''
        r+=chr(ord('A')+ord(c)-ord('a')) if t else c
        t=False
    return r
r=conv(s)
if ord(s[0]) in range(ord('A'),ord('Z')+1) or s[0]=='_' or s[-1]=='_' or s!=conv(r):
    r='Error!'
print(r)

설명

문자열을 순회하며 현재 모드(Java/C++)를 추적하고 변환 결과를 만듭니다. 선행/후행 _, 대문자 시작 등 예외 케이스를 함께 검사해 에러를 판정합니다.



댓글남기기