본문 바로가기

알고리즘 공부 및 문제 풀이/백준(BOJ)

[c++] 백준 1037 약수

백준 단계별로 풀어보기 [정수론 및 집합론] 약수

https://www.acmicpc.net/problem/1037

 

1037번: 약수

첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되

www.acmicpc.net

 

[풀이]

1과 자기 자신을 제외한 어떤 수 n의 진짜 약수가 주어졌을 때 n의 값을 구하는 문제이다. 배열에 약수를 모두 입력 받은 후 오름차순으로 정렬하면, 가장 첫번째와 마지막 수의 곱이 n이 된다.

 

[코드]

#include <iostream>
#include <algorithm>

int main() {
	int num; //약수 개수
	std::cin >> num;
	int* arr = new int[num];

	for (int i = 0; i < num; i++) {
		std::cin >> arr[i]; 
	}

	std::sort(arr, arr + num);

	std::cout << arr[0] * arr[num - 1];

	delete[] arr;
	
	return 0;
}