본문 바로가기

앱 개발/Algorithm

forEachIndexed (가장 가까운 같은 글자)

< 문제 50번 >

 

< solution >

 

class Solution {
    fun solution(s: String): IntArray {
        val answer = mutableListOf<Int>()
        val check = mutableSetOf<Char>() // 중복 문자 체크 Set

        s.forEachIndexed { index, char ->

 

            // 중복 문자가 아니면 -1을 answer List에 추가
            if (!check.contains(char)) {
                answer += -1
                check.add(char)
            } else {

 

               // 중복 문자이면 마지막으로 등장한 인덱스를 현재 인덱스에서 뺀 수를 answer List에 추가
                answer += index - s.substring(0, index).lastIndexOf(char)
            }
        }
        return answer.toIntArray()
    }
}

 

 

< forEachIndexed 사용 예 >

 

val list = listOf("apple", "banana", "orange")

list.forEachIndexed { index, value ->
    println("Index $index: $value")
}


// Index 0: apple
// Index 1: banana
// Index 2: orange

 

 

 forEach 함수는 각 요소에 대해 작업을 수행하지만 해당 요소의 인덱스에 접근할 수는 없다. 그러나 forEachIndexed 함수는 람다식의 첫 번째 인자로 요소의 인덱스를, 두 번째 인자로 요소 자체를 받는다. 이를 활용하여 요소와 함께 해당 요소의 인덱스를 사용하여 작업을 수행할 수 있다.

728x90