🔎 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++내장 정렬함수를 사용하여 쉽게 구할 수 있다.

문제 링크

풀이 깃허브 링크

댓글남기기