[Kotlin] 프로그래머스 - JadenCase 문자열 만들기

Kotlin

Language :

문제

링크

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

문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한사항

s는 길이 1 이상 200 이하인 문자열입니다.

s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.

  • 숫자는 단어의 첫 문자로만 나옵니다.
  • 숫자로만 이루어진 단어는 없습니다.
  • 공백문자가 연속해서 나올 수 있습니다.

입출력 예

입출력 예 #1

  • 입력: "3people unFollowed me"
  • 출력: "3people Unfollowed Me"

입출력 예 #2

  • 입력: "for the last week"
  • 출력:  "For The Last Week"

코드 1

kotlin

class Solution {
    fun solution(s: String): String {
        var answer = ""
        for (i in s.indices) {
            if (i == 0)
                answer = s[i].uppercase().toString()
            else if (s[i] == ' ')
                answer+= " "
            else if (s[i - 1] == ' ')
                answer+= s[i].uppercase().toString()
            else
                answer+= s[i].lowercase().toString()
        }
        return answer
    }
}

text

테스트 1 〉	통과 (3.85ms, 60MB)
테스트 2 〉	통과 (3.63ms, 60.4MB)
테스트 3 〉	통과 (4.06ms, 61.6MB)
테스트 4 〉	통과 (4.82ms, 60.8MB)
테스트 5 〉	통과 (3.77ms, 61.8MB)
테스트 6 〉	통과 (3.52ms, 61.6MB)
테스트 7 〉	통과 (4.02ms, 58.9MB)
테스트 8 〉	통과 (4.83ms, 58.3MB)
테스트 9 〉	통과 (4.19ms, 59.3MB)
테스트 10 〉	통과 (2.43ms, 62.2MB)
테스트 11 〉	통과 (5.22ms, 59.7MB)
테스트 12 〉	통과 (3.74ms, 60.6MB)
테스트 13 〉	통과 (5.78ms, 60.1MB)
테스트 14 〉	통과 (5.53ms, 59.2MB)
테스트 15 〉	통과 (5.28ms, 60MB)
테스트 16 〉	통과 (7.31ms, 60.4MB)
테스트 17 〉	통과 (3.45ms, 61.7MB)
테스트 18 〉	통과 (0.04ms, 61.8MB)

코드 2

kotlin

class Solution {
    fun solution(s: String): String {
        var answer = ""
        for (i in s.indices) {
            if (i == 0 || s[i] == ' ' || s[i-1] == ' ')
                answer+= s[i].uppercase().toString()
            else
                answer+= s[i].lowercase().toString()
        }
        return answer
    }
}

text

테스트 1 〉	통과 (3.78ms, 61.2MB)
테스트 2 〉	통과 (2.79ms, 59.4MB)
테스트 3 〉	통과 (4.42ms, 62.8MB)
테스트 4 〉	통과 (3.89ms, 60MB)
테스트 5 〉	통과 (3.21ms, 61.1MB)
테스트 6 〉	통과 (4.04ms, 61.3MB)
테스트 7 〉	통과 (3.00ms, 60.9MB)
테스트 8 〉	통과 (4.13ms, 62.7MB)
테스트 9 〉	통과 (2.52ms, 61.7MB)
테스트 10 〉	통과 (2.46ms, 59.7MB)
테스트 11 〉	통과 (3.69ms, 62.4MB)
테스트 12 〉	통과 (2.98ms, 60.9MB)
테스트 13 〉	통과 (2.72ms, 60.4MB)
테스트 14 〉	통과 (2.38ms, 62MB)
테스트 15 〉	통과 (3.79ms, 60.8MB)
테스트 16 〉	통과 (2.69ms, 61.4MB)
테스트 17 〉	통과 (2.70ms, 62.6MB)
테스트 18 〉	통과 (3.48ms, 60.7MB)

코드 3. replaceFirstChar 함수 사용

kotlin

class Solution {
    fun solution(s: String): String {
        return s.lowercase().split(" ").joinToString(" ") { it.replaceFirstChar { str -> str.uppercase() } }
    }
}

text

테스트 1 〉	통과 (14.24ms, 61.9MB)
테스트 2 〉	통과 (22.73ms, 61.6MB)
테스트 3 〉	통과 (25.42ms, 61.2MB)
테스트 4 〉	통과 (18.18ms, 60.2MB)
테스트 5 〉	통과 (19.63ms, 62.3MB)
테스트 6 〉	통과 (18.36ms, 61.6MB)
테스트 7 〉	통과 (16.31ms, 62MB)
테스트 8 〉	통과 (15.76ms, 61.6MB)
테스트 9 〉	통과 (17.78ms, 61.1MB)
테스트 10 〉	통과 (18.27ms, 62MB)
테스트 11 〉	통과 (13.90ms, 60.9MB)
테스트 12 〉	통과 (15.15ms, 61.7MB)
테스트 13 〉	통과 (15.64ms, 61.2MB)
테스트 14 〉	통과 (18.15ms, 62MB)
테스트 15 〉	통과 (19.55ms, 61.1MB)
테스트 16 〉	통과 (17.54ms, 61.6MB)
테스트 17 〉	통과 (15.81ms, 61.2MB)
테스트 18 〉	통과 (12.84ms, 61.3MB)

민갤

Back-End Developer

백엔드 개발자입니다.