문제
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한사항
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
입출력 예
풀이방법
1. 주어진 문자열 s를 공백을 기준으로 잘라서 배열에 담는다.
var words = s.split(" ")
2. 배열을 하나씩 반복하면서 만약 길이가 0이라면 공백을 추가하고,
0이 아니라면 숫자인지 영문자인지 체크해야한다.
체크하는 부분은 isNum이라는 함수를 만들었다.
함수의 매개변수를 int로 변경했을 때 NumberFormatException이 발생하면 문자라는 의미.
3. 만약 숫자라면 숫자를 append하고 숫자가 아니라면 대문자로 변경해서 append한다.
words.forEach{
if(it.length == 0){
answer.append(" ")
}else{
if(!isNum(it[0].toString())){
answer.append(it[0].toUpperCase())
}else{
answer.append(it[0])
}
}
}
4. 그리고 첫번째를 제외한 나머지 부분은 소문자로 변경해서 append한다.
한 문자가 끝날 때마다 공백도 추가해줘야한다.
for(i in 1 until it.length){
answer.append(it[i].toLowerCase())
}
answer.append(" ")
5. 여기서 답을 제출하면 오류가 뜬다.
이유는 answer.append(" ")가 answer의 맨 마지막에도 들어가기 때문
그래서 마지막 공백은 제거해야한다.
answer.delete(answer.length-1, answer.length)
주의할 점
테스트 케이스
" a b "
return
" A B "
위의 테스트 케이스에 공백을 기준으로 split 하면 [, a, b, ] 와 같이 공백도 담긴다.
그렇기 때문에 if(it.length == 0) 이 조건이 없다면 오류가 발생하므로 주의할 것 !
코드
class Solution {
fun solution(s: String): StringBuilder {
var answer = StringBuilder()
var words = s.split(" ")
println(words)
words.forEach{
println(it)
if(it.length == 0){
answer.append(" ")
}else{
if(!isNum(it[0].toString())){
answer.append(it[0].toUpperCase())
}else{
answer.append(it[0])
}
for(i in 1 until it.length){
answer.append(it[i].toLowerCase())
}
answer.append(" ")
}
}
answer.delete(answer.length-1, answer.length)
return answer
}
fun isNum(c: String): Boolean{
return try{
c.toInt()
true
}catch(e: NumberFormatException){
false
}
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/12951#
'Algorithm > kotlin' 카테고리의 다른 글
[프로그래머스/Kotlin] 공원 산책 (Lv. 1) (2) | 2024.03.29 |
---|---|
[프로그래머스/Kotlin] 이진 변환 반복하기 (Lv. 2) (0) | 2024.03.27 |
[프로그래머스/Kotlin] 구슬을 나누는 경우의 수 (Lv. 0) (0) | 2024.02.13 |
[프로그래머스/Kotlin] 공 던지기 (Lv. 0) (0) | 2024.02.13 |
[프로그래머스/Kotlin] 이진수 더하기 (Lv. 0) (2) | 2024.02.13 |