일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 파이썬
- 네트워크
- Python
- kotest
- 백준
- 회고
- nodejs
- 웹보안
- Baekjoon
- gcp
- programmers
- node.js
- hackctf
- 시스템 해킹
- docker
- spring Batch
- 보안
- sequelize
- 리버싱
- 프로그래머스
- gcp cloud build
- Batch
- 포너블
- 웹해킹
- 사이버보안
- cloud run
- gcp ci/cd
- pwnable.xyz
- 스프링 배치
- webhacking.kr
Archives
uju's Tech
[Baekjoon] 변수명 : 16205 본문
변수명 : 16205
사용언어: python
문제
변수명을 정하는 표기법은 여러 가지가 있다.
- 카멜 표기법 (Camel Case): 각 단어의 첫 글자를 대문자로 적는다. 단, 가장 첫 글자는 소문자를 사용한다.
- 예시: camelCase,variableN,thisIsCamelCase,howToSolveThisProblem
- 스네이크 표기법 (Snake Case): 소문자만 사용하고, 각 단어의 사이에 언더바(_)를 넣어서 적는다.
- 예시:snake_case,variable_n,this_is_snake_case,how_to_solve_this_problem
- 파스칼 표기법 (Pascal Case): 카멜 표기법과 같지만, 가장 첫 글자도 대문자를 사용한다.
- 예시:PascalCase,VariableN,ThisIsPascalCase,HowToSolveThisProblem
한 표기법을 사용한 변수명이 주어졌을 때, 이를 다른 표기법으로 변환하는 프로그램을 작성하시오.
입력
첫째 줄에 사용한 표기법의 번호와 변수명이 주어진다. 번호가 1인 경우는 카멜 표기법, 2인 경우는 스네이크 표기법, 3인 경우는 파스칼 표기법이다.
입력으로 주어지는 변수명의 길이는 100을 넘지 않는다.
카멜 표기법, 파스칼 표기법을 사용한 변수명은 알파벳 소문자와 대문자로만 이루어져 있고, 스네이크 표기법을 사용한 변수명은 알파벳 소문자와 언더바(_)로만 이루어져 있다. 또, 스네이크 표기법을 사용한 변수명의 첫 글자와 마지막 글자는 언더바가 아니고, 언더바가 연속해서 두 개 이상 사용하는 경우는 없다.
출력
첫째 줄에 카멜 표기법을 사용한 경우, 둘째 줄에 스네이크 표기법을 사용한 경우, 셋째 줄에 파스칼 표기법을 사용한 경우를 출력한다.
정리
- 1: camel 은 소문자 + 대문자
- 2: snake 는 소문자 + '_' -> 첫글자와 마지막 글자에는 _가 들어가면 안된다. 한꺼번에 두 개 이상의 _ 불가
- 3: pascal 은 소문자 + 대문자
Think
딕셔너리를 이용하여 1,2,3 유형에 맞게 지정해주었다.
각각의 표기법으로 변환해 주는것은 함수를 만들어 지정해주자.
upper(), lower()등을 사용해보자.
dic을 이용해서 입력받는 유형에 따라 조건문을 사용해 들어온 문자를 그대로 출력해주자.
Code
import sys
def camel(case1):
result = []
flag = 1
flag2 = 0
for item in case1:
if flag2 == 0:
result.append(item.lower())
flag2 =1
continue
else:
if flag == 0:
result.append(item.upper())
flag = 1
continue
if item == '_':
flag = 0
continue
result.append(item)
return result
def snake(case1):
result = []
result.append(case1[0].lower())
for i in range(len(case1) - 1):
if case1[i + 1].isupper():
result.append('_')
case1[i+1] =case1[i+1].lower()
result.append(case1[i + 1])
return result
def pascal(case1):
result = []
flag = 1
for item in case1:
if flag == 1:
result.append(item.upper())
flag = 0
continue
if item == '_':
flag = 1
continue
result.append(item)
return result
caseDic = {'camel': 1, 'snake': 2, 'pascal': 3}
N, case = sys.stdin.readline().split()
N = int(N)
case1 = list(case)
case2 = list(case)
if N == caseDic['snake']:
print(''.join(camel(case1)))
print(case)
print(''.join(pascal(case1)))
elif N == caseDic['camel']:
print(case)
print(''.join(snake(case1)))
print(''.join(pascal(case2)))
elif N == caseDic['pascal']:
print(''.join(camel(case1)))
print(''.join(snake(case1)))
print(case)
'Baekjoon' 카테고리의 다른 글
[Baekjoon : Python] 늑대와 양 : 16956 (0) | 2020.07.31 |
---|---|
[Baekjoon] 노래악보 : 1392 (0) | 2020.07.30 |
[Baekjoon] 기타줄 : 1049 (0) | 2020.07.29 |
[Baekjoon] 수 찾기: 1920 (0) | 2020.07.18 |
[Baekjoon] 보너스 점수 : 17389 (0) | 2020.07.18 |
Comments