[C언어] 약수의 개수와 덧셈

tnrms08·2022년 3월 9일
0

프로그래머스

목록 보기
6/21

문제 설명

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

코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int divisorCount(int num){
    int count =0;  //약수의 개수
    for(int i=1;i<=num;i++){   //약수의 개수 구하기
        if(num%i==0)
            count++;
    }
    if(count%2==0)	//약수의 개수가 짝수인 경우
        return 0;
    else			//약수의 개수가 홀수인 경우
        return 1;
}
int solution(int left, int right) {
    int answer = 0;
    for(int i=left;i<=right;i++){	//약수의 개수에 따른 덧셈과 뺄셈 수행
        if(divisorCount(i)==0)
            answer += i;
        else
            answer -= i;
    }
    return answer;
}

약수의 개수가 짝수이면 0을 리턴하고 홀수이면 1을 리턴하는 divisorCount 함수를 새롭게 작성하였다.
left부터 right까지의 수를 더하거나 빼는 문제이므로 solution에서 반복문을 사용하였다.

0개의 댓글