약수의 개수와 덧셈

김여울·2025년 6월 24일

내일배움캠프

목록 보기
29/139
#include <string>
#include <vector>
#include <cmath>

using namespace std;

int solution(int left, int right)
{
    int answer  = 0;
    
    for (int i = left; i <= right; i+)
    {
        int root = (int)sqrt(i);    // sqrt(i) : i의 제곱근을 구함
        // i의 제곱근 = 약수의 개수가 홀수인지 짝수인지 판단하는 기준

        if (root * root == i)  // root를 제곱했을 때 다시 i가 나오면 i는 제곱수
        {
            answer -= i;  // 제곱수는 약수의 개수가 홀수이므로 빼기
        }
        else
        {
            answer += i;  // 제곱수가 아니면 약수의 개수가 짝수이므로 더하기    
        }
    }

    return answer;
}
  • sqrt(i)
    i의 제곱근을 구한다
    제곱근은 약수의 개수가 홀수인지, 짝수인지 판단하는 기준
    그걸 int형으로 받아서 root에 저장

  • root * root == i
    root를 제곱했을 때 다시 i가 나오면 i는 제곱수
    (예) 9의 제곱근은 3
    3 * 3 = 9

  • if 조건문으로 약수의 개수가 홀수이면 빼고 짝수이면 더한다

0개의 댓글