행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.
행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.
행과 열을 크기를 사전에 입력받자
Array(행)<IntArray(열)>로 배열안의 배열을 입력받아 행렬을 만들자
계산식은 arr1.size로 행의 크기를 알아내고 arr1[i].size로 열의 크기를 알아내 arr1[i][j]로 위치를 특정한뒤 행렬
println("행의 크기를 입력해주세요")
row = readLine()?.toIntOrNull() ?: continue
println("열의 크기를 입력해주세요")
val col = readLine()?.toIntOrNull() ?: continue
arr1 = Array(row) { IntArray(col) }
while (i < row) {
println("열을 입력해주세요")
val colInput = readLine()?.split(" ")?.map { it.toIntOrNull() }
if (colInput == null || colInput.any { it == null }) {
println("올바른 열을 입력하세요.")
continue
}
arr1[i] = colInput.mapNotNull { it!! }.toIntArray()
i++
}
행(row)와 열(col)의 크기를 입력받고
배열(행크기){배열(열크기)}로 이루어진 행렬을 만든다
fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
var answer = Array<IntArray>(arr1.size){
i -> IntArray(arr1[0].size){j -> arr1[i][j] + arr2[i][j]}
}
return answer
}
조금 복잡해보이는데 해석하면
배열<정수배열타입>(크기 = arr의 행) { 원소 = i -> 정수배열(크기 = arr의 열) {i의 원소 = j -> arr1[i][j]+ arr2[i][j] 같은행 같은열에 있는 arr1 arr2의 원소들을 더한다}
같은 열과 같은 행에 위치해 있는 원소들을 더하고 리턴
package com.example.codekata
fun main() {
while (true) {
var row: Int = 0
var i = 0
var arr1: Array<IntArray>
println("행의 크기를 입력해주세요")
row = readLine()?.toIntOrNull() ?: continue
println("열의 크기를 입력해주세요")
val col = readLine()?.toIntOrNull() ?: continue
arr1 = Array(row) { IntArray(col) }
while (i < row) {
println("열을 입력해주세요")
val colInput = readLine()?.split(" ")?.map { it.toIntOrNull() }
if (colInput == null || colInput.any { it == null }) {
println("올바른 열을 입력하세요.")
continue
}
arr1[i] = colInput.mapNotNull { it!! }.toIntArray()
i++
}
var arr2: Array<IntArray>
println("같은 크기의 행렬을 입력해주세요")
i = 0
arr2 = Array(row) { IntArray(col) }
while (i < row) {
println("열을 입력해주세요")
val colInput = readLine()?.split(" ")?.map { it.toIntOrNull() }
if (colInput == null || colInput.any { it == null }) {
println("올바른 열을 입력하세요.")
continue
}
arr2[i] = colInput.mapNotNull { it!! }.toIntArray()
i++
}
println("${solution(arr1, arr2).contentDeepToString()}")
}
}
fun solution(arr1: Array<IntArray>, arr2: Array<IntArray>): Array<IntArray> {
var answer = Array<IntArray>(arr1.size){
i -> IntArray(arr1[0].size){j -> arr1[i][j] + arr2[i][j]}
}
return answer
}