이상한 문자 만들기

KSang·2023년 12월 9일
0

[Kotlin]코드카타

목록 보기
40/100

🕵️문제설명

문자열 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()로 변환해준다


0개의 댓글