https://www.acmicpc.net/problem/2014
2014번: 소수의 곱
첫째 줄에 K(1 ≤ K ≤ 100), N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 K개의 소수가 오름차순으로 주어진다. 같은 소수가 여러 번 주어지는 경우는 없으며, 주어지는 소수는 모두 541보다 작거나
www.acmicpc.net
저는 우선순위 큐를 통해 문제를 해결하였습니다.
우선순위 큐에 입력 값들을 넣고, 맨 앞에 있는 것을 입력값에 각각 곱하여 문제를 해결하였습니다.
package BOJ.greedy;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
import java.util.function.Function;
public class BOJ_2014 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Function<String,Integer> stoi = Integer::parseInt;
Function<String,Long> stol = Long::parseLong;
StringTokenizer st = new StringTokenizer(br.readLine());
int n = stoi.apply(st.nextToken());
int k = stoi.apply(st.nextToken());
long[] number = new long[n];
st = new StringTokenizer(br.readLine());
PriorityQueue<Long> pq = new PriorityQueue<>();
for(int i = 0 ; i < n ; i++){
number[i] = stol.apply(st.nextToken());
pq.offer(number[i]);
}
long temp = 0;
for(int i = 0 ; i < k ; i++){
temp = pq.poll();
for(int j = 0 ; j < n ; j++){
long value = temp * number[j];
pq.offer(value);
if(temp % number[j] == 0){
break;
}
}
}
System.out.println(temp);
}
}
'알고리즘' 카테고리의 다른 글
백준 16509번 장군 (JAVA) (0) | 2023.10.02 |
---|---|
백준 15720번 카우버거 (JAVA) (0) | 2023.10.01 |
백준 24479번 알고리즘 수업 - 깊이 우선 탐색 1 (JAVA) (0) | 2023.09.29 |
백준 1475번 방 번호 (JAVA) (0) | 2023.09.28 |
백준 1183번 약속 (JAVA) (0) | 2023.09.27 |