[백준/파이썬] 3613번 Java vs C++ 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 3613번 Java vs C++
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
식별자 표기법이 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++)를 추적하고 변환 결과를 만듭니다.
선행/후행 _, 대문자 시작 등 예외 케이스를 함께 검사해 에러를 판정합니다.
댓글남기기