![article thumbnail image](https://blog.kakaocdn.net/dn/bHP5Cc/btqZoxlhE3D/YHoOdVznOPhbvL1M6qGUgK/img.png)
문제 : 양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.
정답 :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
int num;
int num2;
int count = 0;
int sum = 0;
scanf("%d", &num);
scanf("%d", &num2);
int *p = malloc(sizeof(int) * num);
for (int i = 0; i < num; i++)
{
scanf("%d",*(p+i));
}
for (int i = 0; i < num; i++)
{
sum = 0;
for (int j = i; j < num; j++)
{
sum += p[j];
if (sum==num2)
{
count += 1;
break;
}
}
}
printf("%d", count);
free(p);
return 0;
}
먼저 수열의 크기를 입력받아, 메모리 동적할당을 통해 입력 받은 크기 만큼의 수열을 만든다.
그 다음 합 M을 입력받고, 또 수열의 요소들을 입력받는다.
그런 다음 이 수열의 i번째 수부터 j번째 수까지의 합이 M이 되는 경우의 수를 구하는데,,
수열의 크기만큼 반복문을 돌린 다음, 또 중첩해서 반복문을 돌려 모든 요소들을 해당요소~끝 요소까지 검사해준다.
수열의 수를 차례차례 sum에 더한 다음, sum이 M 값이 되면 count 값을 증가시키고 두번째 반복문을 빠져나온다.
첫번째 반복문까지 끝난 뒤에 이제 지금까지 누적시킨 count 값을 출력해준다.
'ETC' 카테고리의 다른 글
[P4C] BOJ 10809 : 알파벳 찾기 (0) | 2021.03.06 |
---|---|
[P4C] BOJ 10773 : 제로 (0) | 2021.03.06 |
22회 해킹캠프 후기 (feat.성실한 해커상 받은 썰) (1) | 2021.02.23 |