본문 바로가기

C_study

[C] 프로그래머스 월간 코드 챌린지 시즌 2 - 약수의 개수와 덧셈

주어진 두 수 left와 right 사이의 수 중 약수가 짝수인 수는 더하고, 홀수인 수는 빼서 return 하는 문제입니다.

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

int solution(int left, int right) {
    int answer = 0;
    
    for(;left <= right ; left++)
    {
        int count = 0;
        for(int i = 1 ; i <= left ; i++)
        {
            if(left%i == 0)
            {
                count += 1;
            }
        }
        if(count%2 == 0)
        {
            answer += left;
        }
        else
            answer -= left;
    }
    return answer;
}

 

1. answer에 더하거나 빼는 과정을 반복하도록 for문에 조건을 먼저 설정했습니다.

2. left는 right보다 작거나 같으므로 left <= right 이라는 조건을 만들고, 실행할 때마다 left는 +1 했습니다.

3. left부터 right까지 반복할 때마다 약수의 개수를 다시 세주어야 해서 count 변수를 반복문 안에 0으로 선언했습니다.

4. left보다 작거나 같은 수로 나누어주면서 나머지가 0이 될 때는 count를 +1 해주었습니다.

5. 약수의 개수를 구한 다음 짝수일 때는 answer에 더하고, 홀수일 때는 빼도록 하여 답을 구했습니다.

코딩테스트 연습 - 약수의 개수와 덧셈 | 프로그래머스 (programmers.co.kr)