-
[백준 알고리즘/Kotlin] 2738번 행렬 덧셈 (feat. 2차원 배열)IT Study/백준 알고리즘 2023. 12. 31. 12:03728x90
안녕하세요, 오늘은 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차원 배열을 활용한 더 복잡한 문제를 해결하는 방법에 대해 알아보도록 하겠습니다 😆
'IT Study > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘/Kotlin] 1181번 단어 정렬 (feat. Set에서 List로 변경?) (0) 2024.01.01 [백준 알고리즘/Kotlin] 2563번 색종이 (feat. 2차원 배열 2) (0) 2023.12.31 [백준 알고리즘/Kotlin] 1157번 단어 공부 (feat. maxOrNull, count, indexOf) (0) 2023.12.27 [백준 알고리즘/Kotlin] 2588번 곱셈 (feat. toString() 이후 toInt() 사용) (0) 2023.12.26 [백준 알고리즘/Kotlin] 10869번 사칙연산 (feat. 입출력, append 체이닝) (1) 2023.12.26