[Kotlin] for loop

sundays·2023년 3월 21일
0

kotlin

목록 보기
18/19

kotlin 으로 이제는 알고리즘 문제를 풀어보려고 합니다. 문제를 풀기에 앞서 가장 기본적인 for loop를 작성하는 방법 부터 개선방법 까지 찾아보았습니다.

문자열 리스트를 간단하게 loop 하여 출력하는 예제 입니다.

가장 기본적인 방법

val fruits = listOf("apple", "banana", "kiwi")

fun main() {
	// 0 기반 indexing을 사용
	for (index in 0 .. fruits.size - 1) {
    	val fruit = fruits[index]
        println("$index : $fruit");
    }
}

간단하게 0부터 fruits.size - 1까지 리턴되게 for loop를 돌고있습니다.
이 경우는 fruit.size - 1를 포함하여 리턴합니다

until 연산자

val fruits = listOf("apple", "banana", "kiwi")

fun main() {
	for (index in 0 until fruits.size) {
    	val fruit = fruits[index]
        println($index : $fruit)
    }
}

until 을 사용하면 fruit.size 에는 배타적 범위를 가지게 됩니다.
0을 포함하지만 fruit.size 를 포함하지 않는 범위까지 offset를 수동으로 작성합니다

list.lastIndex

until과는 반대로 포함 연산자를 작성하게 할 수도 있습니다.

val fruits = listOf("apple", "banana", "kiwi")

fun main() {
	for (index in 0 .. fruits.lastIndex) {
    	val fruit = fruits[index];
        println($index : $fruit);
    }
}

1번과 흡사해 보이나 lastIndex를 사용하여 가장 마지막 인덱스까지 반복된다는 것을 알 수 있습니다.

list.indices

자체 범위를 지정하지 않는 다른 단계를 소개합니다

val fruits = listOf("apple", "banana", "kiwi")

fun main() {
	for (index in fruits.indices) {
    	val fruit = fruits[index]
        printn("$index : $fruit")
    }
}

indices 함수가 인덱스를 0부터 마지막 인덱스까지 반환하게 할 수 있습니다

list.withIndex()

val fruits = listOf("apple", "banana", "kiwi")

fun main() {
	for ((index, fruit) in fruits.withIndex()) {
    	println($index " $fruit)
    }
}

key, value 에 해당하는 값을 index fruit에 각각 배정해 줄 수 있는 방법입니다

list.forEachIndexed { (Int, String) -> Unit }

val fruits = listOf("apple", "banana", "kiwi")

fun main() {
	fruits.forEachIndexed {
    	index, fruit ->
        	println("$index : $fruit)
    }
}

람다를 사용해서 위와 동일한 코드를 만들 수도 있습니다. 루프와 인덱스를 사용하게 하면 됩니다.

Reference

profile
develop life

0개의 댓글