< 문제 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
'앱 개발 > Algorithm' 카테고리의 다른 글
핸드폰 번호 가리기 (0) | 2024.03.25 |
---|---|
minOrNull(), filter (제일 작은 수 제거하기) (0) | 2024.03.19 |
withIndex (푸드 파이트 대회) (0) | 2024.03.14 |
Array, Set (두 개 뽑아서 더하기) (0) | 2024.03.11 |
Destructuring declarations (K번째수) (0) | 2024.03.08 |