본문 바로가기
2022 하반기/Python

백준 16205 python

by concho 2023. 2. 20.

https://www.acmicpc.net/problem/16205

 

16205번: 변수명

첫째 줄에 사용한 표기법의 번호와 변수명이 주어진다. 번호가 1인 경우는 카멜 표기법, 2인 경우는 스네이크 표기법, 3인 경우는 파스칼 표기법이다. 입력으로 주어지는 변수명의 길이는 100을

www.acmicpc.net

import sys
import re
from unittest import result

# 입력값 받기
inputCase, name = sys.stdin.readline().strip().split()

# 입력값을 처리하기 위한 변수 초기화
firstWord = [name[0]]  # 첫 번째 단어
rootWords = []  # 분리된 단어

# 입력값에 따라 처리 방법이 달라짐
if inputCase == '1':
    # 대문자, 소문자 순서로 패턴 기준으로 문자 분리
    rootWords = re.findall('[A-Z][a-z]*', name)

    # 소문자로 이뤄진 단어 하나 분리
    for i in range(1,len(name)):
        if name[i].isupper():
            break
        else:
            firstWord[-1] += name[i]
    rootWords = firstWord + rootWords

elif inputCase == '2':
    # 언더스코어 기준으로 단어 분리
    rootWords = name.split('_')

elif inputCase == '3':
    # 대문자, 소문자 순서로 패턴 기준으로 문자 분리
    rootWords = re.findall('[A-Z][a-z]*', name)

# 단어의 첫 글자를 대문자로, 나머지 글자를 소문자로 변환하여 붙이기
for i in range(len(rootWords)):
    rootWords[i] = rootWords[i].title()
result3 = "".join(rootWords)

# 첫 번째 단어는 소문자, 나머지 단어는 소문자로 변환하여 붙이기
rootWords[0] = rootWords[0].lower()
result1 = "".join(rootWords)

# 두 번째 단어부터 언더스코어로 붙이기
for i in range(1,len(rootWords)):
    rootWords[i] = rootWords[i].lower()
result2 = "_".join(rootWords)

# 결과값 출력
print(result1)
print(result2)
print(result3)

https://www.acmicpc.net/problem/16205

 

'2022 하반기 > Python' 카테고리의 다른 글

백준 14501 python  (0) 2023.03.05
백준 8958 python  (0) 2023.02.20
백준 1019 python  (0) 2023.02.17
백준 10815 python  (0) 2023.02.17
Characteristics of python data type(파이썬 데이터 타입의 특성)  (0) 2023.02.16

댓글