IT Study/백준 알고리즘

[백준 알고리즘/Kotlin] 2738번 행렬 덧셈 (feat. 2차원 배열)

three kim 2023. 12. 31. 12:03
728x90

 

안녕하세요, 오늘은 2차원 배열을 다루는 방법에 대해 알아보도록 하겠습니다.

먼저, 최종 코드를 살펴봅시다.

 

최종 코드

fun main() = System.`in`.bufferedReader().use { br ->
    val (n, m) = br.readLine().split(" ").map { it.toInt() }

    val array = Array(n) { IntArray(m) }
    for (i in 0 until n) {
        array[i] = br.readLine().split(" ").map { it.toInt() }.toIntArray()
    }

    for (i in 0 until n) {
        val row = br.readLine().split(" ").map { it.toInt() }
        for (j in 0 until m) {
            array[i][j] += row[j]
        }
    }

    array.forEach { row ->
        println(row.joinToString(" "))
    }
}

 

 

1. 2차원 배열 생성

val array = Array(n) { IntArray(m) }
Array(n)
n 크기의 배열을 생성합니다. 이 배열의 각 요소는 초기에 null로 설정됩니다.

{ IntArray(m) }
이 부분은 람다 표현식입니다. Array(n) 함수는 람다 표현식을 매개변수로 받아, 이를 통해 각 요소를 초기화합니다.
여기서는 IntArray(m)를 통해 m 크기의 정수 배열을 생성하여 각 요소를 초기화합니다.

행의 길이가 n, 열의 길이가 m인 2차원 배열을 생성합니다. 이 배열의 모든 요소는 초기에 0으로 설정됩니다.

 

 

2. 리스트 → 배열 변환

for (i in 0 until n) {
    array[i] = br.readLine().split(" ").map { it.toInt() }.toIntArray()
}

사용자로부터 한 줄의 입력을 받아 공백을 기준으로 분리한 후,

이를 정수로 변환하여 리스트로 만들고 .toIntArray()를 통해 배열로 변환합니다. 이 배열은 array[i]에 저장됩니다.

 

 

3. 배열에 다른 배열 더하기

for (i in 0 until n) {
    val row = br.readLine().split(" ").map { it.toInt() }
    for (j in 0 until m) {
        array[i][j] += row[j]
    }
}
for (i in 0 until n) { ... }
루프를 통해 각 행에 대해 다른 배열을 더합니다.

val row = br.readLine().split(" ").map { it.toInt() }
사용자로부터 또 다른 배열을 입력받습니다.

for (j in 0 until m) { array[i][j] += row[j] }
이를 원래 배열에 더합니다.

 

 

4. 결과 출력

array.forEach { row ->
    println(row.joinToString(" "))
}

각 행을 공백으로 구분하여 출력합니다.

 

 

이처럼 코틀린에서는 간결한 문법을 통해 2차원 배열을 쉽게 다룰 수 있습니다.

이 문제를 통해 2차원 배열 생성, 사용자 입력 받기, 배열에 다른 배열 더하기 등의

기본적인 작업을 진행하는 방법을 알아보았습니다.

 

다음 시간에는 2차원 배열을 활용한 더 복잡한 문제를 해결하는 방법에 대해 알아보도록 하겠습니다 😆