문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한 사항
- 1 ≤ left ≤ right ≤ 1,000
풀이 코드
using System;
using System.Collections.Generic;
public class Solution {
public int solution(int left, int right) {
var sum = 0;
for (var n = left; n <= right; n++)
{
var list = new List<int>() { 1 };
for (var i = 1; i <= n / 2; i++)
{
if (n % i == 0)
{
if (!list.Contains(i))
{
list.Add(i);
}
if (!list.Contains(n / i))
{
list.Add(n / i);
}
}
}
if (list.Count % 2 == 0)
{
sum += n;
}
else
{
sum -= n;
}
}
return sum;
}
}
약수 관련된 문제에서 항상 놓치는 부분은 1의 약수로 1을 추가하지 않는 상황이다.
1의 약수로 1이 추가될 수 있도록 항상 주의하자.
'프로그래밍 > Algorithm' 카테고리의 다른 글
[프로그래머스 Programmers] 숫자 짝궁 (0) | 2024.01.15 |
---|---|
[프로그래머스 Programmers] 기사단원의 무기 (1) | 2024.01.10 |
[프로그래머스 Programmers] 콜라츠 수열 만들기 (0) | 2024.01.03 |
[프로그래머스 Programmers] 모의고사 (1) | 2023.12.13 |
지구 종말에 대한 하노이 예언 (0) | 2023.12.12 |
댓글