본문 바로가기
프로그래밍/Algorithm

[프로그래머스 Programmers] 약수의 개수와 덧셈

by bantomak 2024. 1. 9.

문제 설명

두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.

 

제한 사항

  • 1 ≤ left ≤ right ≤ 1,000

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

풀이 코드

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이 추가될 수 있도록 항상 주의하자.

댓글