문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
fun solution(s: String): String {
val answer = s.split(" ").joinToString(" ") {
it.mapIndexed{ index, c -> if (index % 2 == 0 )c.toUpperCase() else c.toLowerCase() }.joinToString("")
}
return answer
}
joinToString
으로 구분자를 변경
로직을 설명해보면 문자열 s를 입력받고 s = "Hello World"
문자열을 " " 공백 기준으로 구분해준다
그리고 joinToString
을 이용해서 split
으로 만들어진 리스트를 문자열로 바꿔준다
그러면 Hello, World로 될텐대 왜냐하면 컬렉션을 문자열로 변환할때 구분자가 기본적으로 ", "이기 때문
joinToString()
의 괄호부분은 separator인데 여기서 구분자를 정해줄수 있다
구분자를 " "으로 변경해줘서 Hello World가 된다
그럼 결국 처음입력한 s랑 같은거 아니냐?
👉공백이 하나일땐 그렇지만 공백 여러개를 붙여 쓰면 다르기 때문에 구분해준다
이제 mapIndexed
를 써서 각 문자를 구분해서 바꿔주자
mapIndexed
는 컬렉션에 사용되지만 문자열은 Char시퀀스로 구성되어 있어 문자열에 사용이 가능
index를 %로 짝수인지 구분해 홀수면 toUpperCase()
, 아니면 toLowerCase()
로 변환해준다