๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 21919_์†Œ์ˆ˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜

๋ฟŒ์•ผ._. 2024. 4. 4. 22:55

Silver III

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/21919)

< ์†Œ์ˆ˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜ >

 

๋ฌธ์ œ ํ’€์ด 

 

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋จผ์ € ์†Œ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. ์ˆ˜์—ด A๋ฅผ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด์„œ ์†Œ์ˆ˜๋“ค์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ค‘๋ณต๋˜์ง€ ์•Š์€ ์†Œ์ˆ˜ ๊ฐ’์„ ๊ณฑํ•œ๋‹ค.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;

public class _21919_ { // ์†Œ์ˆ˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int n = Integer.parseInt(bf.readLine());

		boolean arr[] = new boolean[1000001];
		arr[0] = true;
		arr[1] = true;
		for (int i = 2; i < 500001; i++) {
			if (!arr[i]) {
				for (int j = i + i; j < 1000001; j += i) {
					arr[j] = true;
				}
			}
		}

		Set<Integer> set = new HashSet<>();
		st = new StringTokenizer(bf.readLine());
		for (int i = 0; i < n; i++) {
			int num = Integer.parseInt(st.nextToken());
			if (!arr[num]) {
				set.add(num);
			}
		}

		if (set.size() == 0)
			System.out.println(-1);
		else {
			long result = 1;
			for (int num : set) {
				result *= num;
			}
			System.out.println(result);
		}
	}
}
๋ณ€์ˆ˜)
n : ์ˆ˜์—ด์˜ ๊ธธ์ด
arr : ์†Œ์ˆ˜
set : ์ˆ˜์—ด A ๊ฐ’ ์ค‘ ์†Œ์ˆ˜
result : ์†Œ์ˆ˜๋“ค์˜ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

 

์ˆ˜์—ด A์˜ ๊ธธ์ด n์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์†Œ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ๊ตฌํ•œ๋‹ค. ์ˆ˜์—ด A์˜ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด์„œ ์†Œ์ˆ˜์ธ ๊ฐ’์„ set์— ์ €์žฅํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ set์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ค‘๋ณต์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ๋‹ค. set์˜ ํฌ๊ธฐ๊ฐ€ 0์ด๋ผ๋ฉด ์†Œ์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ -1์„ ์ถœ๋ ฅํ•˜๊ณ  set์˜ ํฌ๊ธฐ๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด set์— ์žˆ๋Š” ๊ฐ’์„ ๋‹ค ๊ณฑํ•œ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.