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
'앱 개발 > Algorithm' 카테고리의 다른 글
Destructuring declarations (K번째수) (0) | 2024.03.08 |
---|---|
문자열 정렬하기 (0) | 2024.03.07 |
행렬의 덧셈 (0) | 2024.02.20 |
=, == (가운데 글자 가져오기) (0) | 2024.02.16 |
isNotEmpty, intArrayOf (나누어 떨어지는 숫자 배열) (0) | 2024.02.15 |