TIL/kotlin 알고리즘

kotlin 프로그래머스 lv1 약수의 개수와 덧셈

crablo 2024. 1. 27. 09:32
728x90

프로그래머스 lv1 약수의 개수와 덧셈

 

 

문제를보고 약수의 총합을 구하는 문제가있었는데

아래와 같다.

프로그래머스 lv1 약수의 합

 

 

나는 해당 문제를

for(i in 1..n){

     if(n % i == 0){

          answer+=i

      }

}

이런식으로 for문을 돌려가면서 해결했다.

i는 1부터 입력받은 n개의 범위안의 숫자이고,

i가 n까지 커질때 나눠가면서 떨어지는 i가 약수이므로

println(i)를하면 약수가 어떤 수인지도 확인가능하다.

 

 

프로그래머스 lv1 약수의 개수와 덧셈

 

먼저, 예시를 보면 left가 13이고 right가 17인경우 left부터 right까지의 범위수에서

그 수들 자신이 아닌 각각의 요소의 약수의 갯수를 카운트 해야 결과를 리턴할 수 있을것 같다는 생각이 들었다.

그래서 단순히 약수의 합처럼 하나의 수뿐만이 아니라 여러가지수를 입력받는 함수가 필요할것 같았고

그 함수는 숫자(num)를 입력받았을때, left부터 right 범위안에 수와 나눴을때 떨어지게 만드는 약수의 count를 리턴하는

함수이다.

코드는 아래와 같이 작성하였다.

 

이렇게 작성하니 코드가 훨씬 간결해졌다.

앞으로도 람다식을 자주사용해야겠다.

728x90