본문 바로가기
스터디(programmers)

Kotlin] 프로그래머스 lv.2, JadenCase 문자열 만들기

by 김마리님 2023. 4. 5.

https://school.programmers.co.kr/learn/courses/30/lessons/12951?language=kotlin# 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

더보기

이 문제의 핵심은.. split으로 나누되, 공백이 있으면 그 공백이 유지되어야 한다는 점이다.

따라서 공백으로 split을 했다면 반드시 뒤에 공백을 붙여 공백을 유지시켜줘야 한다.

하지만, 마지막에 붙은 공백은 없애줘야 하므로, 인덱싱을 하거나, 혹은 마지막의 글자를 subString등으로 삭제해서 보내줘야 한다.

 

즉, 공백으로 나누고, 글씨가 있다면 맨 앞글자를 UpperCase로, 나머지 글자를 lowerCase로 변환한 후 뒤에 공백을 붙여서 answer 에 줄줄이 붙인다. 그리고 마지막에 subString을 통해 마지막 글씨를 삭제함으로써 마지막에 붙은 공백을 제거한다.

 

class Solution {
    fun solution(s: String): String {
        var answer = ""
        var array = s.split(" ")

        array.forEach { s ->
            var doString =
            if(s.isEmpty()) {
                ""
            } else {
                "${s[0].uppercase()}${s.subSequence(1, s.length).toString().lowercase()}"
            }
            answer += "$doString "
        }

        return answer.substring(range = 0 .. answer.length - 2)
    }
}

 

++) 전에 비슷한 문제가 있었던거 같은데,,

그 때의 joininString이 있었네..

이걸 split 한 배열에 joinToString을 했으면 마지막 문자열 붙일 때 "$doString ", 그리고 리턴할 때 글씨 안 잘라도 공백처리 깔끔했을 듯.. 까먹지 말자. 

반응형