두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
1 ≤ left ≤ right ≤ 1,000
약수를 구하는 함수를 만들어 리스트로 약수를 받은뒤
size가 짝수면 더하고 홀수면 빼자
fun main() {
var a = 0
var b = 0
while (true) {
println("left를 입력하세요")
try {
a = readln().toInt()
if (a !in 1..1000) {
println("숫자는 1~ 1000 사이에 있어야 합니다")
continue
}
}catch (e:NumberFormatException){
println("숫자로 입력해주세요")
continue
}
println("right를 입력하세요")
try {
b = readln().toInt()
if (b !in 1..1000) {
println("숫자는 1~ 1000 사이에 있어야 합니다")
continue
}else if(b < a){
println("앞에서 입력한 값보다 커야 합니다")
continue
}
}catch (e:NumberFormatException){
println("숫자로 입력해주세요")
continue
}
println("${solution(a,b)}")
}
}
fun divisor(x: Int):IntArray {
var answer = intArrayOf()
var i = 1
while (i <= x){
if (x % i == 0){
answer += i
}
i++
}
return answer
}
약수의 리스트를 만드는 함수
fun holzzac(x: IntArray): Int{
if(x.size % 2 == 0){
return x[x.size-1]
}else return -x[x.size-1]
}
약수의 개수가 홀수면 음수를 짝수면 양수를 리턴한다
fun solution(left: Int, right: Int): Int {
var answer: Int = 0
var i = left
while (i <= right){
answer += holzzac(divisor(i))
i++
}
return answer
}
package com.example.codekata
import java.lang.NumberFormatException
fun main() {
var a = 0
var b = 0
while (true) {
println("left를 입력하세요")
try {
a = readln().toInt()
if (a !in 1..1000) {
println("숫자는 1~ 1000 사이에 있어야 합니다")
continue
}
}catch (e:NumberFormatException){
println("숫자로 입력해주세요")
continue
}
println("right를 입력하세요")
try {
b = readln().toInt()
if (b !in 1..1000) {
println("숫자는 1~ 1000 사이에 있어야 합니다")
continue
}else if(b < a){
println("앞에서 입력한 값보다 커야 합니다")
continue
}
}catch (e:NumberFormatException){
println("숫자로 입력해주세요")
continue
}
println("${solution(a,b)}")
}
}
fun solution(left: Int, right: Int): Int {
var answer: Int = 0
var i = left
while (i <= right){
answer += holzzac(divisor(i))
i++
}
return answer
}
fun divisor(x: Int):IntArray {
var answer = intArrayOf()
var i = 1
while (i <= x){
if (x % i == 0){
answer += i
}
i++
}
return answer
}
fun holzzac(x: IntArray): Int{
if(x.size % 2 == 0){
return x[x.size-1]
}else return -x[x.size-1]
}