Programming

[2주차] 백준 1037번: 약수_C++

mnzy🌱 2022. 4. 4. 01:39

백준 1037: 약수

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

 

1037번: 약수

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

www.acmicpc.net


- 어떤 N의 약수의 개수와 약수들을 입력하면

- N을 출력해준다


#include <iostream>
using namespace std;
#define MAX 50

int num;
int s = 0;
int maxNum, minNum;
int arr[MAX];

void func(int x) {
	for (int i = 0; i < x; i++) {
		cin >> arr[i];
		s++;
	}

	maxNum = arr[0];
	for (int i = 0; i < s; i++) {
		if (arr[i] > maxNum) {
			maxNum = arr[i];
		}
	}

	minNum = arr[0];
	for (int i = 0; i < s; i++) {
		if (arr[i] < minNum) {
			minNum = arr[i];
		}
	}
	cout << maxNum * minNum << endl;
}

int main() {
	cin >> num;
	func(num);
}

- 약수의 개수를 입력받고(num), 개수만큼 반복문을 돌려 배열(arr[i])에 약수들을 넣어준다.

- 약수들 중 제일 큰 수와 제일 작은 수를 곱하면 N이 나온다

* 제일 큰 수와 제일 작은 수를 곱해야 한다는 아이디어를 생각하는 것이 제일 중요하다


이번 문제는 쉬워서 별 고민없이 잘 풀었던 것 같다!