본문 바로가기

앱 개발/Algorithm

mapIndexed (이상한 문자 만들기)

 mapIndexed 함수는 주어진 람다 함수를 사용하여 컬렉션의 각 요소에 대한 변환을 수행하여 새로운 컬렉션으로 반환한다. 컬렉션의 요소를 변환하거나 인덱스와 함께 특정 연산을 수행할 때 유용하다. 람다 함수의 첫 번째 인자는 현재 요소의 인덱스이고 두 번째 인자는 현재 요소의 값이다.

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5)

    // 각 요소를 제곱하고 인덱스를 더한 새로운 리스트 생성
    val result = numbers.mapIndexed { index, value -> value * value + index }

    println(result)  // [1, 5, 11, 19, 29]
}


< 문제 41번 >

 문자열 s는 한 개 이상의 단어로 구성되어 있고, 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 solution 함수를 완성하세요.

 

< solution >


class Solution {
    fun solution(s: String): String {
        val s1 = s.split(" ")  // 입력 문자열을 공백을 기준으로 나누어 리스트로 저장

        // 각 단어에 대하여 다음 과정을 수행
        val s2 = s1.map { word ->

            //  단어를 문자 단위로 나누어 각 문자에 대하여 다음 과정을 수행  
            val modifiedWord = word.mapIndexed { index, char ->

                // 문자의 인덱스가 짝수면 대문자로, 홀수면 소문자로 변경
                if (index % 2 == 0) char.toUpperCase() else char.toLowerCase()

            }.joinToString("")  // 변경된 문자들을 다시 하나의 단어로 조합

            modifiedWord

        }.joinToString(" ")  // 각 단어를 다시 공백을 넣어 전체 문자열로 조합

        return s2
    }
}

728x90