Programmers Scala Study (level 1.9)

9. 약수의 개수와 덧셈

문제 설명

두 정수 사이의 모든 수중 약수가 짝수인 수는 더하고 홀수인 수는 빼서 총합을 출력.

Inputs

Variable Name type meaning
left Int start number
right Int end number

output

return Int // sum of the numbers based on the following condition

Conditions

  • number range
    • 1 ≤ left ≤ right ≤ 1000
  • summation process
    • divisor even → sum += num, divisior odd → sum -= num

Test cases

left right result
13 17 43
24 27 52

Solution

숫자 range로 Vector 생성후 map함수로 해당 숫자의 약수 개수 확인후 해당 숫자 음수 혹은 양수 처리. 최종 벡터 sum

def isEvenDivisor(num: Int): Boolean = ((1 to num/2).filter(i => num % i == 0).length + 1) % 2 == 0
def solution(left: Int, right: Int): Int = {
  return (left to right).map(num => if (isEvenDivisor(num)) num else -num).sum
}

Study from Implementation

  • 시작과 끝을 알고 있는 숫자 리스트를 더 쉽게 생성할 수 있다.
    • 그냥 (start to end by step) 이라고 적으면 된다.