주어진 두 수 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에 더하고, 홀수일 때는 빼도록 하여 답을 구했습니다.
'C_study' 카테고리의 다른 글
[C] 프로그래머스 위클리 챌린지 2주차 - 상호 평가 (0) | 2021.08.23 |
---|---|
[C] 코딩도장 73 : 배열 정렬하기 (0) | 2021.08.23 |
[C] 프로그래머스 월간 코드 챌린지 시즌 1 - 내적 (0) | 2021.08.21 |
[C] 코딩도장 72 : 파일에서 구조체를 읽고 쓰기 (0) | 2021.08.20 |
[C] 코딩도장 71 : 파일에서 문자열을 읽고 쓰기 (0) | 2021.08.19 |