Kotlin

[Kotlin] - map함수 (리스트 값 변경하기)

서퍼리노 2023. 2. 2. 01:45
728x90

map 함수란?

Kotlin에는 map이라는 함수가 있습니다.

해당 함수는 리스트의 값을 조건에 따라 변경해 줍니다.

 

map 함수는 filter 함수를 사용하던 것처럼, 

for문과 if문을 이용하여 똑같은 결과를 낼 수 있지만,

이를 보다 간결하게 작성할 수 있습니다.

 

간단한 예제와 함께 map 함수를 사용해 봅시다.

 

해당 요소들에 모두 3을 곱하는 함수를 작성할 때 함수를 작성해 봅시다.

map 함수 사용하기

fun main() {
    val list = listOf(1, 2, 3)
    println(list.map { it * 3 })
}

 

map 함수는 filter 함수와 같이 해당 결과를 리턴해준다.

 

하지만 filter 함수는 조건에 따라 값을 가져오기에

처음에 시작하는 값과 반환되는 값의 길이가 다를 수 있습니다.

 

하지만 map 함수는 각 요소에 식을 적용한 리스트를 반환해 주기 때문에 위와 같이 

예제처럼 계산을 할 수도 있지만,

 

fun main() {
    val list = listOf(1, 2, 3)
    println(list.map { it % 2 == 0 })
}

이와 같이 조건문을 이용할 수도 있고, 요소를 원하는 대로 변환할 수 있습니다.

 

이를 이용하면 백준에서 입력을 받는 요소를 매번 toInt()로 변경하는 것이

아닌 map을 이용하여 한 번에 처리할 수 있습니다.

 

import java.io.BufferedReader
import java.io.InputStreamReader

fun main() = with(BufferedReader(InputStreamReader(System.`in`))){
    val input = readLine().split(" ")
    
    println(input[0].toInt())
}

위 함수처럼 입력을 받아서 사용하는 경우

어떤 입력이 들어온다 해도 String으로 입력이 되기 때문에

 

Int 타입으로 사용하려면 위와 같이 사용할 때마다 형태를 변환해줘야 합니다.

 

하지만 리스트 자체를 형 변환을 시켜준다면

 

import java.io.BufferedReader
import java.io.InputStreamReader

fun main() = with(BufferedReader(InputStreamReader(System.`in`))){
    val input = readLine().split(" ").map { it.toInt() }
}

 

매우 간단하게 사용할 수 있습니다.

 

728x90