정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
n은 0 이상 3000이하인 정수입니다.
class Solution
{
fun solution(n: Int): Int
{
var answer = 0 //answer를 선언하고 0으로 초기화
for ( i in 1..n)
{
if (n % i == 0)
{
answer += i
}
}
return answer
}
}
오늘 1차 시도에서 바로 성공
i는 반복문에서 사용될 변수, 1부터 n포함한 범위를 i에 순회하면서, n에 주어진 값이 i를 나누어떨어지는지 확인한다. 나누어떨어지는 경우, 그 i값을 answer에 하나씩 더한다.
class Solution
{
fun solution(n: Int): Int
{
var answer = 0
answer = (1..n).filter { n % it == 0 }.sum()
return answer
}
}
충격적, 아직 배울 문법이 너무 많네요 😅 여기서 고차함수를 사용하여 더 간결하게 작성할 수 있다.
1..n
1부터 n까지의 범위를 생성한다.
.filter { n % it == 0 }
위 범위 내에서 n을 나누어떻어지게 하는 값들을 필터링한다.(n의 약수들을 추출)
.sum()
위에서 필터링한 값들이 합을 계산하고 answer에 할당한다.