728x90
https://www.acmicpc.net/problem/1037
1037번: 약수
첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되
www.acmicpc.net
1. 약수가 모두 주어졌을때 (최소약수)*(최대약수) = N 이라는 전략을 이용해서 해결한다.
2. 우선 배열이 오름차순으로 정렬시켜야하므로 qsort함수를 이용했다.
3. 정렬된 배열에 최소약수와 최대약수를 곱해 구하고자하는 숫자를 찾는다.
나의코드)
#include <stdio.h>
#include <stdlib.h>
int compare(const void *first, const void *second)
{
if (*(int*)first > *(int*)second)
return (1);
else if (*(int*)first < *(int*)second)
return (-1);
else
return (0);
}
int main()
{
int N, i, j, flag;
int divisor[51] = {0};
scanf("%d", &N);
i = 0;
while (i < N)
{
scanf("%d", &divisor[i]);
i++;
}
qsort(divisor, N, sizeof(int), compare);
printf("%d", divisor[0]*divisor[N-1]);
return (0);
}
728x90
'backjoon > 여러가지' 카테고리의 다른 글
유클리드 호제법 c언어 구현하기 (0) | 2023.01.29 |
---|---|
qsort함수 (0) | 2023.01.28 |
백준 5086 c언어 (0) | 2023.01.27 |
백준 2556번 최대값 c언어 (0) | 2023.01.23 |
백준 2738번 행렬 덧셈 c언어 (2) | 2023.01.22 |
댓글