백준 코딩테스트/실버

1037) 약수 (C++)

xortl98 2022. 4. 24. 15:55
728x90

 출처 

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

 

1037번: 약수

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

www.acmicpc.net

 내 풀이 

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

vector<int> v;	//약수들을 넣을 변수 
int N = 0;

int main()
{
	cin >> N;

	int input = 0;

	for (int i = 0; i < N; i++)
	{
		cin >> input;
		v.push_back(input);
	}

	sort(v.begin(), v.end());

	//만일 입력받은 수가 1개면 약수를 만들기 위해 서로 곱해줌 
	if (v.size() == 1) cout << v[0] * v[0];

	//그게 아니면 맨 첫번째 값과 마지막 값을 곱해서 약수를 만들어줌 
	else cout << v[0] * v[v.size() - 1];
}

 해설

어떤 수의 약수가 주어졌다고 했기 때문에 가장 작은 값과 큰 값을 곱해주면 풀리는 문제였다.

 

 새로 안 것 

문제 푸는 방법