본문 바로가기
backjoon/여러가지

백준 1037 약수 c언어

by 정구지개발자 2023. 1. 28.
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

댓글