문제 출처 : https://www.acmicpc.net/problem/16205
언어 : Kotlin
문제 설명 :
변수명을 정하는 표기법은 여러 가지가 있다.
카멜 표기법 (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을 넘지 않는다.
카멜 표기법, 파스칼 표기법을 사용한 변수명은 알파벳 소문자와 대문자로만 이루어져 있고, 스네이크 표기법을 사용한 변수명은 알파벳 소문자와 언더바(_)로만 이루어져 있다. 또, 스네이크 표기법을 사용한 변수명의 첫 글자와 마지막 글자는 언더바가 아니고, 언더바가 연속해서 두 개 이상 사용하는 경우는 없다.
출력 :
첫째 줄에 카멜 표기법을 사용한 경우, 둘째 줄에 스네이크 표기법을 사용한 경우, 셋째 줄에 파스칼 표기법을 사용한 경우를 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
2 variable_n | variableN variable_n VariableN |
1 camelCase | camelCase camel_case CamelCase |
3 HowToSolveThisProblem | howToSolveThisProblem how_to_solve_this_problem HowToSolveThisProblem |
2 good | good good Good |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.*
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
readLine().split(" ").also { str ->
val base = if (str[1].contains("_")) str[1].split("_") else str[1].split("(?=[A-Z])".toRegex())
base.map { it.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() } }.also {
bw.append("${it.joinToString("").replaceFirstChar { it.lowercaseChar() }}\n")
.append("${it.joinToString("_").lowercase().removePrefix("_")}\n")
.append(it.joinToString(""))
}
}
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
26560번: Periods (0) | 2024.07.26 |
---|---|
4446번: ROT13 (1) | 2024.07.25 |
10932번: SHA-512 (0) | 2024.07.24 |
14174번: Block Game (0) | 2024.07.24 |
5949번: Adding Commas (0) | 2024.07.23 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!