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차원 배열을 활용한 더 복잡한 문제를 해결하는 방법에 대해 알아보도록 하겠습니다 😆