Kotlin/Kotlin Language

[Kotlin] zip - 배열을 묶어서 써보자

chattymin 2023. 9. 5. 19:32
728x90
반응형

알고리즘 문제를 풀다보면 리스트 두개가 나올 때가 있다.

그 두개의 같은 Index를 참조해서 문제를 푸는 경우가 더러 있다.

 

그때마다 for문으로 같은 index를 참조해서 문제를 자주 풀었었다. 하지만, kotlin에는 zip이라는 함수가 있고, 이를 활용하면 편하게 해결할 수 있다. 그래서 zip함수를 소개하고자 한다.

 

zip은 무슨 기능을 할까?

제목에 있는 것 처럼 두개의 배열을 묶어서 Pair타입의 배열을 리턴해주는 것이다.

array나 list 둘다 사용 가능하다.

 

두개의 배열을 묶어서 하나의 배열처럼 사용 가능하게 해주는 함수로, 같은 index에 접근할 때 유용하다.

 

그럼 어떻게 쓸까?

var list1 = listOf(1,2,3,4,5)
var list2 = listOf(1,2,3,4,5)

var zipList = list1.zip(list2)

println(zipList)
// [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5)]

list1과 list2를 묶어서 Pair로 리턴해준다.

 

이 상태에서 값을 처리 하는 것은 map을 쓰는 등 다양한 방법을 사용하면 된다.

 

 

타입이 다르면 어떻게 될까?

상관없다. Pair로 되는 것이기 때문에 그저 다른 두개의 타입이 Pair로 묶이는 것이다.

var list1 = listOf(1,2,3,4,5)
var list2 = listOf("a", "b", "c", "d", "e")

var zipList = list1.zip(list2)

println(zipList)
//[(1, a), (2, b), (3, c), (4, d), (5, e)]

 

 

길이가 다르면 어떻게 될까?

둘 중 더 짧은 것으로 묶인다.

var list1 = listOf(1,2,3,4,5)
var list2 = listOf(3,4,5)

var zipList = list1.zip(list2)

println(zipList)
// [(1, 3), (2, 4), (3, 5)]

 

728x90
반응형