본문 바로가기
알고리즘/백준

백준 1037번 약수

by canoe726 2020. 8. 5.
728x90

- 문제 설명

 

N의 진짜 약수들이 입력으로 주어졌을 때, N의 값을 구하는 문제

 

※ 진짜 약수 : 1과 N을 제외한 약수

ex) 25의 진짜 약수 : 5

 

 

- 입력

 

첫째 줄에 N의 진짜 약수의 개수 (1 <= N <= 50),

둘째 줄에는 N의 진짜 약수 (1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수, 중복 없음)

 

 

- 출력

 

N 출력 (항상 32비트 부호있는 정수로 표현 가능)

 

 

* 문제 풀이의 핵심

 

1. N = 진짜 약수 중 제일 작은 값 * 진짜 약수 중 제일 큰 값

 

2. 입력은 크기순으로 주어지지 않고 무작위로 주어진다.

 

 

- 소스코드

 

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

using namespace std;

int main() {
	int N;
	cin >> N;

	vector<int> num;

	int i;
	for (i = 0; i < N; i++) {
		int n;
		cin >> n;

		num.push_back(n);
	}

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

	cout << num[0] * num[num.size() - 1] << "\n";
}

 

 

- 문제링크 : https://www.acmicpc.net/problem/1037

 

1037번: 약수

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

www.acmicpc.net

 

 

- 제출한 코드

 

 

 

>  백준 아이디 : canoe726

>  사용언어 : C++

>  에디터 : Visual Studio 2017

>  궁금한점은 댓글로 남겨주세요

728x90

댓글