본문 바로가기
알고리즘 문제 풀이/프로그래머스

프로그래머스 JadenCase 문자열 만들기 Kotlin (문자열) 2022-06-22 코드 추가

by 옹구스투스 2022. 4. 29.
반응형

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12951

 

코딩테스트 연습 - JadenCase 문자열 만들기

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고

programmers.co.kr

문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나옵니다.
    • 숫자로만 이루어진 단어는 없습니다.
    • 공백문자가 연속해서 나올 수 있습니다.


※ 공지 - 2022년 1월 14일 제한 조건과 테스트 케이스가 추가되었습니다.

 

풀이

딱히 설명할 게 없는 문제.

주어진 조건대로 JadenCase를 만들면 된다.

첫 글자가 숫자든, 문자든 uppercaseChar()는 오류를 반환하진 않고, 문자면 대문자로 바꾸어주기 때문에

공백문자가 연속으로 나와서 split()으로 나눈 it가 비었을 경우만 스킵하면 된다.

Kotlin의 함수를 얼마나 알고 있냐에 따라서 코드가 엄청 간결해지는 문제.

다른 분의 코드를 보니

String.capitalize()

이란 함수도 있었다.

이 함수는 문자열의 첫 번째 문자를 upperCase로 바꿔서 리턴해 준다고 한다.

그럼 코드는 더 간결해 진다.

 

class Solution {
     fun solution(s: String): String {
          return s.lowercase().split(" ").map {
                it.capitalize()
            }.joinToString(" ")
    }
}

 

2022-06-22

capitalize는 코틀린 1.5부터 deprecated되었다.

이는 아래 코드2처럼 replaceFirstChar 등 여러 방법으로 대체할 수 있는데,

기존에 capitalize 대신 확장함수 등을 이용하여 좀 더 목적이 분명하고 명확한 이름을 사용하는 것을 권장한다.

코드1

class Solution {
    fun solution(s: String): String {
        val answer = s.split(' ').map{
            if(it.isNotEmpty()) {
                var chArr = it.lowercase().toCharArray()
                chArr[0] = chArr[0].uppercaseChar()
                String(chArr)
            }
            else{
                it
            }
        }.joinToString(" ")

        return answer
    }
}

코드2(2022-06-22)

class Solution {
    fun solution(s: String) =
        s.split(' ').joinToString(" ") { it.lowercase().replaceFirstChar { it.uppercase() } }
}
반응형

댓글