728x90
( 월간 코드 챌린지 시즌2 / 약수의 개수와 덧셈 )
[문제]
문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ left ≤ right ≤ 1,000
입출력 예시
left | right | result |
13 | 17 | 43 |
24 | 27 | 52 |
입출력 예 #1
- 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다.
수 | 약수 | 약수의 개수 |
13 | 1, 13 | 2 |
14 | 1, 2, 7, 14 | 4 |
15 | 1, 3, 5, 15 | 4 |
16 | 1, 2, 4, 8, 16 | 5 |
17 | 1, 17 | 2 |
- 따라서, 13 + 14 + 15 - 16 + 17 = 43을 return 해야 합니다.
입출력 예 #2
- 다음 표는 24부터 27까지의 수들의 약수를 모두 나타낸 것입니다.
수 | 약수 | 약수의 개수 |
24 | 1, 2, 3, 4, 6, 8, 12, 24 | 8 |
25 | 1, 5, 25 | 3 |
26 | 1, 2, 13, 26 | 4 |
27 | 1, 3, 9, 27 | 4 |
- 따라서, 24 - 25 + 26 + 27 = 52를 return 해야 합니다.
[코드]
자바
class Solution {
public int solution(int left, int right) {
int answer = 0;
for(int i = left; i <= right; i++) answer += Math.sqrt(i) % 1 == 0 ? -i : i;
return answer;
}
}
코틀린
import kotlin.math.sqrt
class Solution {
fun solution(left: Int, right: Int): Int {
return (left..right).fold(0){ acc, i -> if(sqrt(i.toDouble()) % 1 == 0.0) acc - i else acc + i }
}
}
제가 잘못 알고 있거나 잘못된 부분이 있을 경우 알려주시고 추가로 궁금한 점 있으신 분들도 댓글이나 메일 주시면 성실히 답변해 드리겠습니다.🧑🏻💻
감사합니다~😄
728x90
'Algorithm > level1' 카테고리의 다른 글
[ 프로그래머스 - MySQL ] 최댓값 구하기 ( MySQL ) (0) | 2021.10.08 |
---|---|
[ 프로그래머스 - MySQL ] 이름이 없는 동물의 아이디 ( MySQL ) (0) | 2021.10.08 |
[ 프로그래머스 - Java & Kotlin ] 3진법 뒤집기 ( 자바 & 코틀린 ) (0) | 2021.10.08 |
[ 프로그래머스 - Java & Kotlin ] 예산 ( 자바 & 코틀린 ) (0) | 2021.10.08 |
[ 프로그래머스 - MySQL ] 역순 정렬하기 ( MySQL ) (0) | 2021.10.08 |