728x90
▶문제 : 코딩 테스트 연습 - 약수의 개수와 덧셈 | 프로그래머스 (programmers.co.kr)
▶코드 작성
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int solution(int left, int right)
{
int answer = 0;
int num, i, count;
for (num = left; num <= right; num++)
{
count = (num == 1) ? 1 : 2; //값이 1일 때 count=1 , 아니면 1과 자기자신 count=2
for (i = 2; i <= num / 2; i++)//약수는 값을 2로 나눈것보다 크지 않다
{
if (num % i == 0)//약수 구하기
{
count++;
}
}
answer += (count % 2 == 0) ? num : -num; //약수 개수가 짝수면 + , 홀수면 -
}
return answer;
}
▶해석
left에서 right까지 사이의 모든 수에서 먼저 left값이 1부터 시작할 때 삼항 연산자를 이용해 count = 1을 하고 1이 아닌 나머지 값은 1과 자기 자신이 약수 고정이므로 count = 2를 한다. i = 2부터 값을 2로 나눈 값까지 반복문으로 1씩 더해주고 i값을 나눈 나머지가 0이면 약수이므로 count ++ 해준다. 마지막으로 answer변수에 약수의 개수인 count 가 짝수면 더하고 홀수면 빼주어 총 계산 값을 반환한다.
728x90
'프로그래머스 > C' 카테고리의 다른 글
프로그래머스 Level 1 : 수박수박수박수박수박수? C언어 (0) | 2021.11.28 |
---|---|
프로그래머스 Level 1 : 3진법 뒤집기 C언어 (3) | 2021.11.26 |
프로그래머스 Level 1 : 음양 더하기 C언어 (0) | 2021.11.26 |
프로그래머스 Level 1 : 내적 C언어 (0) | 2021.11.26 |
프로그래머스 Level 1 : 소수만들기 C언어 (0) | 2021.11.26 |
댓글