반응형
2차원 배열을 1차원으로 정리하는 방법들을 정리해 봤습니다.
코테에서도 많이 활용되는 부분입니다.
- 중첩된 for 루프를 사용하여 변환하기
fun flattenArray(twoDArray: Array<IntArray>): IntArray {
val rows = twoDArray.size
val cols = twoDArray[0].size
val oneDArray = IntArray(rows * cols)
var index = 0
for (i in 0 until rows) {
for (j in 0 until cols) {
oneDArray[index++] = twoDArray[i][j]
}
}
return oneDArray
}
fun main() {
val twoDArray = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6),
intArrayOf(7, 8, 9)
)
val oneDArray = flattenArray(twoDArray)
println(oneDArray.joinToString(", ")) // Output: 1, 2, 3, 4, 5, 6, 7, 8, 9
}
- flatMap을 사용하여 변환하기
fun flattenArray(twoDArray: Array<IntArray>): IntArray {
return twoDArray.flatMap { it.toList() }.toIntArray()
}
fun main() {
val twoDArray = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6),
intArrayOf(7, 8, 9)
)
val oneDArray = flattenArray(twoDArray)
println(oneDArray.joinToString(", ")) // Output: 1, 2, 3, 4, 5, 6, 7, 8, 9
}
inline fun <T, R> Iterable<T>.flatMap(transform: (T) -> Iterable<R>): List<R>
- reduce를 사용하여 변환하기
첫 번째 배열을 초기 값으로 하여 그다음의 배열을 이어서 더해줍니다.
fun flattenArray(twoDArray: Array<IntArray>): IntArray {
return twoDArray.reduce { acc, intArray -> acc + intArray }
}
fun main() {
val twoDArray = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6),
intArrayOf(7, 8, 9)
)
val oneDArray = flattenArray(twoDArray)
println(oneDArray.joinToString(", ")) // Output: 1, 2, 3, 4, 5, 6, 7, 8, 9
}
inline fun <S, T : S> Iterable<T>.reduce(operation: (acc: S, T) -> S): S
- flatten을 사용하여 변환하기
flatten은 Array <Array <Int>> 형태를 List <Int>로 변환하는 경우에만 사용할 수 있습니다.
fun flattenArray(twoDArray: Array<IntArray>): List<Int> {
return twoDArray.map { it.toList() }.flatten()
}
fun main() {
val twoDArray = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6),
intArrayOf(7, 8, 9)
)
val oneDList = flattenArray(twoDArray)
println(oneDList.joinToString(", ")) // Output: 1, 2, 3, 4, 5, 6, 7, 8, 9
}
반응형
반응형
2차원 배열을 1차원으로 정리하는 방법들을 정리해 봤습니다.
코테에서도 많이 활용되는 부분입니다.
- 중첩된 for 루프를 사용하여 변환하기
fun flattenArray(twoDArray: Array<IntArray>): IntArray {
val rows = twoDArray.size
val cols = twoDArray[0].size
val oneDArray = IntArray(rows * cols)
var index = 0
for (i in 0 until rows) {
for (j in 0 until cols) {
oneDArray[index++] = twoDArray[i][j]
}
}
return oneDArray
}
fun main() {
val twoDArray = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6),
intArrayOf(7, 8, 9)
)
val oneDArray = flattenArray(twoDArray)
println(oneDArray.joinToString(", ")) // Output: 1, 2, 3, 4, 5, 6, 7, 8, 9
}
- flatMap을 사용하여 변환하기
fun flattenArray(twoDArray: Array<IntArray>): IntArray {
return twoDArray.flatMap { it.toList() }.toIntArray()
}
fun main() {
val twoDArray = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6),
intArrayOf(7, 8, 9)
)
val oneDArray = flattenArray(twoDArray)
println(oneDArray.joinToString(", ")) // Output: 1, 2, 3, 4, 5, 6, 7, 8, 9
}
inline fun <T, R> Iterable<T>.flatMap(transform: (T) -> Iterable<R>): List<R>
- reduce를 사용하여 변환하기
첫 번째 배열을 초기 값으로 하여 그다음의 배열을 이어서 더해줍니다.
fun flattenArray(twoDArray: Array<IntArray>): IntArray {
return twoDArray.reduce { acc, intArray -> acc + intArray }
}
fun main() {
val twoDArray = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6),
intArrayOf(7, 8, 9)
)
val oneDArray = flattenArray(twoDArray)
println(oneDArray.joinToString(", ")) // Output: 1, 2, 3, 4, 5, 6, 7, 8, 9
}
inline fun <S, T : S> Iterable<T>.reduce(operation: (acc: S, T) -> S): S
- flatten을 사용하여 변환하기
flatten은 Array <Array <Int>> 형태를 List <Int>로 변환하는 경우에만 사용할 수 있습니다.
fun flattenArray(twoDArray: Array<IntArray>): List<Int> {
return twoDArray.map { it.toList() }.flatten()
}
fun main() {
val twoDArray = arrayOf(
intArrayOf(1, 2, 3),
intArrayOf(4, 5, 6),
intArrayOf(7, 8, 9)
)
val oneDList = flattenArray(twoDArray)
println(oneDList.joinToString(", ")) // Output: 1, 2, 3, 4, 5, 6, 7, 8, 9
}
반응형