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