길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.
이때, a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)
a, b의 길이는 1 이상 1,000 이하입니다.
a, b의 모든 수는 -1,000 이상 1,000 이하입니다.
배열의 크기가 같다면 반복문으로 반복해서
배열 순서에 맞게 계산한뒤 더해주면 될것
사용자에게서 배열을 입력받아보자
29 20 12 로 공백을 넣어 구분해서 입력하게 하고 split map을 이용해서 배열을 만든다
try-catch로 문자를 썼을때 예외 처리를 하고 any를 이용해 배열의 원소의 범위를 지정해줬다
fun main() {
var a = intArrayOf()
var b = intArrayOf()
while (true) {
println("공백으로 구분하고 배열을 입력해주세요 예) 10 11 12 13")
var input = readln()
if (input == null) {
println("유효한 입력값이 아닙니다")
continue
}
try {
a = input.split(" ")?.map { it.toInt() }?.toIntArray()!!
if (a.any {it !in -1000 .. 1000}){
println("숫자는 -1000~ 1000 사이에 있어야 합니다")
continue
}
if (a != null) {
if (a.size > 1000) {
println("배열의 크기가 너무 큽니다")
continue
}
}
} catch (e: NumberFormatException) {
println("숫자로 이뤄어진 배열이어야 합니다")
continue
}
while (true) {
println("입력하신 값과 크기가 같은 배열을 입력해주세요")
input = readln()
try {
b = input.split(" ")?.map { it.toInt() }?.toIntArray()!!
if (b.any {it !in -1000 .. 1000}){
println("숫자는 -1000~ 1000 사이에 있어야 합니다")
continue
}
if (a.size != b.size) {
println("배열의 크기가 다릅니다 다시 입력해주세요")
continue
} else {
break
}
}
catch (e: NumberFormatException) {
println("숫자로 이뤄어진 배열이어야 합니다")
continue
}
}
println("${solution(a,b)}")
}
}
fun solution(a: IntArray, b: IntArray): Int {
var answer: Int = 0
var i = 0
while (i < a.size){
answer += a[i] * b[i]
i++
}
return answer
}
배열의 원소들을
package com.example.codekata
import java.lang.NumberFormatException
fun main() {
var a = intArrayOf()
var b = intArrayOf()
while (true) {
println("공백으로 구분하고 배열을 입력해주세요 예) 10 11 12 13")
var input = readln()
if (input == null) {
println("유효한 입력값이 아닙니다")
continue
}
try {
a = input.split(" ")?.map { it.toInt() }?.toIntArray()!!
if (a.any {it !in -1000 .. 1000}){
println("숫자는 -1000~ 1000 사이에 있어야 합니다")
continue
}
if (a != null) {
if (a.size > 1000) {
println("배열의 크기가 너무 큽니다")
continue
}
}
} catch (e: NumberFormatException) {
println("숫자로 이뤄어진 배열이어야 합니다")
continue
}
while (true) {
println("입력하신 값과 크기가 같은 배열을 입력해주세요")
input = readln()
try {
b = input.split(" ")?.map { it.toInt() }?.toIntArray()!!
if (b.any {it !in -1000 .. 1000}){
println("숫자는 -1000~ 1000 사이에 있어야 합니다")
continue
}
if (a.size != b.size) {
println("배열의 크기가 다릅니다 다시 입력해주세요")
continue
} else {
break
}
}
catch (e: NumberFormatException) {
println("숫자로 이뤄어진 배열이어야 합니다")
continue
}
}
println("${solution(a,b)}")
}
}
fun solution(a: IntArray, b: IntArray): Int {
var answer: Int = 0
var i = 0
while (i < a.size){
answer += a[i] * b[i]
i++
}
return answer
}