문제 풀이 및 개발 공간

[백준] 21919번 소수 최소 공배수 문제! (silver 3 본문

백준공부/java

[백준] 21919번 소수 최소 공배수 문제! (silver 3

gomduri43 2022. 8. 18. 15:00

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
		int n=Integer.parseInt(br.readLine());
		int max=0;
		int[] num=new int[n];
		StringTokenizer st=new StringTokenizer(br.readLine());
		for(int i=0; i<n; i++) {
			num[i]=Integer.parseInt(st.nextToken());
			max= max>num[i] ?  max: num[i];
		}
		int[] aratos=new int[max+1];
		aratos=aratosChae(aratos, max);
		long multy=1;
		for(int i=0; i<n; i++) {
			if(aratos[num[i]] ==0) {
				multy*=num[i];
				aratos[num[i]]=1; //중복인 상황들 잡아주기(중복되지 않게)
			}
		}
		bw.write(multy==1 ? "-1": multy+"" );
		bw.flush();
	}
	public static int[] aratosChae(int[] aratos, int max) {
		for(int i=2; i<max+1; i++) {
			if(aratos[i]==1) {
				continue;
			}
			for(int j=i+i; j<max+1; j+=i) {
				aratos[j]=1;
			}
		}
		return aratos;
		
	}
}