🌞Algorithm/🔥Baekjoon

[Baekjoon] 12723_Minimum Scalar Product (Small)

뿌야._. 2025. 3. 11. 01:23
문제(출처: https://www.acmicpc.net/problem/12723)

< Minimum Scalar Product (Small) >

 

문제 풀이 

 

최소 스칼라 곱을 구하기 위해 v1을 오름차순으로, v2를 내림차순으로 정렬 후 각각 곱한 값을 더한다.

 

my solution (Java)

 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.StringTokenizer;
 
 public class _12723_ { // Minimum Scalar Product (Small)
 
 	public static void main(String[] args) throws IOException {
 		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
 		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 		StringTokenizer st;
 
 		int T = Integer.parseInt(bf.readLine());
 
 		for (int i = 0; i < T; i++) {
 			int n = Integer.parseInt(bf.readLine());
 
 			Integer v1[] = new Integer[n];
 			Integer v2[] = new Integer[n];
 
 			st = new StringTokenizer(bf.readLine());
 			for (int j = 0; j < n; j++) {
 				v1[j] = Integer.parseInt(st.nextToken());
 			}
 
 			st = new StringTokenizer(bf.readLine());
 			for (int j = 0; j < n; j++) {
 				v2[j] = Integer.parseInt(st.nextToken());
 			}
 
 			Arrays.sort(v1);
 			Arrays.sort(v2, Collections.reverseOrder());
 
 			int result = 0;
 			for (int j = 0; j < n; j++) {
 				result += v1[j] * v2[j];
 			}
 
 			bw.write("Case #" + (i + 1) + ": " + result + "\n");
 		}
 		bw.flush();
 	}
 }
변수)
T : 테스트 케이스 수
n : 벡터 개수
v1, v2 : 값
result : 최소 스칼라 곱

 

테스트 케이스 수 T를 입력받는다. T만큼 다음 과정을 반복한다.

 

1) n 입력

2) n만큼 값을 입력받아 각각 v1과 v2 배열에 저장

3) 각 곱을 최솟값으로 만들기 위해 v1을 오름차순으로, v2를 내림차순으로 정렬

4) v1과 v2의 곱을 result에 더함

5) 최종 result 출력



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 24155_得点 (Score)  (0) 2025.03.10
[Baekjoon] 17599_Bags  (0) 2025.02.28
[Baekjoon] 5092_Air Old Zeeland  (0) 2025.02.27
[Baekjoon] 8975_PJESMA  (0) 2025.02.26
[Baekjoon] 14534_String Permutation  (0) 2025.02.25