알고리즘 문제풀이 [백준 1037]
🔎 BACKJOON 1037
- 문제
양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.
- 입력
첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.
- 출력
첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.
#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char const *argv[]){
int n_num, i;
cin >> n_num;
int *arr = new int[n_num];
for(i = 0; i < n_num; i++){
cin >> arr[i];
}
sort(arr, arr+n_num);
cout << arr[0] * arr[n_num - 1];
return 0;
}
백준 문제풀이를 진행하며 거의 처음으로 c++을 사용해보았는데 가장 신기했던 부분은 변수값으로 배열을 동적할당하는 부분이였다.
int *arr = new int[n_num];
간단하면서도 포인터로 유용하게 접근가능하다.
문제의 풀이는 진짜 약수의 개수가 전부 주어지기 때문에 n의 값은 약수중 가장 작은 값 * 가장 큰 값을 하면 원하는 수가 나오기 때문에 c++내장 정렬함수를 사용하여 쉽게 구할 수 있다.
댓글남기기