[백준] 문제 1026번 : 보물 - JAVA
2024. 12. 1. 09:19 - DoosanBaek
[링크] : https://www.acmicpc.net/problem/1026
💎 문제 분석 & 제약 조건
문제 분석 :
길이가 N인 정수 배열 A와 B에서, 함수 S를 정의
S = A[0] × B[0] + ... + A[N-1] × B[N-1]
S의 값을 가장 작게 만들기 위해 A의 수를 재배열
S의 최솟값을 출력하는 프로그램 작성
제약 조건 :
N은 50보다 작거나 같은 자연수
A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수
🚀 의사 결정
1. BufferedReader를 사용하여 입력받고
2. A 배열은 int[]로, B 배열은 Integer[]로 선언
3.StringTokenizer를 사용하여 A와 B 배열의 원소들을 입력
4.A 배열은 오름차순으로 정렬하고, B 배열은 내림차순으로 정렬
5.B 배열의 내림차순 정렬을 위해 Collections.reverseOrder()를 사용
6.정렬된 A와 B 배열의 같은 인덱스 원소들을 곱하여 더하고, 최종 결과인 S를 출력
📜 소스코드(Java)
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // BufferedReader로 입력 받아서
int N = Integer.parseInt(br.readLine()); // BufferedReader의 readLine 메서드로 읽어온 값을 parseInt로 형변환 하고
// A 배열은 int[]로, B 배열은 Integer[]로 선언
int[] A = new int[N];
Integer[] B = new Integer[N];
// StringTokenizer를 사용하여 A와 B 배열의 원소들을 입력
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
A[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
B[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(A); // A 배열은 오름차순으로 정렬
Arrays.sort(B, Collections.reverseOrder()); // B 배열의 내림차순 정렬
long S = 0;
// 정렬된 A와 B 배열의 같은 인덱스 원소들을 곱하여 더하고
for (int i = 0; i < N; i++) {
S += (long) A[i] * B[i];
}
//최종 결과인 S를 출력
System.out.println(S);
}
}
'알고리즘' 카테고리의 다른 글
[백준] 문제 16173번 : 점프왕 쩰리 - JAVA (0) | 2024.12.05 |
---|---|
[백준] 문제 2309번 : 일곱난쟁이 - JAVA (0) | 2024.12.05 |
[백준] 문제 1946번 : 신입 사원 - JAVA (0) | 2024.12.04 |
[백준] 문제 28114번 : 팀명 정하기 - JAVA (1) | 2024.12.02 |
[백준] 문제 11557 : Yangjojang of The Year - JAVA (0) | 2024.11.30 |
[백준] 문제 14235 : 크리스마스 선물 - JAVA (0) | 2024.11.30 |
[백준] 문제 2346 : 풍선 터뜨리기 - JAVA (0) | 2024.11.30 |
[백준] 문제 1158번 : 요세푸스 - JAVA (3) | 2024.11.30 |