반응형
츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 1026번 보물 자바(Java)
1) 문제번호 : 1026번
2) 문제 출처
2. 문제
옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다.
길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자.
S = A[0]×B[0] + ... + A[N-1]×B[N-1]
S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다.
S의 최솟값을 출력하는 프로그램을 작성하시오.
3. 제약사항
-
4. 입력
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다.
5. 출력
첫째 줄에 S의 최솟값을 출력한다.
6. 풀이
- 이 문제는 배열 A와 배열 B의 원소값을 곱하여 최소의 값을 만들 수 있도록 A 정렬을 구하여 곱한 값 중 최솟값을 구하는 문제이다.
- 결국엔 배열 A의 원소에서 가장 작은 값과 배열 B에서 가장 큰 값을 곱하여 sum을 최소로 만들면 된다.
- 그래서, 이 문제를 푸는 방법은 배열 A와 B를 오름차순하여 A의 첫 인덱스와 B의 마지막 인덱스를 곱하여 반복하거나 / 배열 A를 오름차순, 배열 B를 내림차순으로 하여 같은 인덱스끼리 곱하여 sum을 구하면 된다.
7. 소스 코드
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] A = new int[N];
int[] B = new int[N];
for(int i=0;i<N;i++) A[i] = sc.nextInt();
for(int i=0;i<N;i++) B[i] = sc.nextInt();
Arrays.sort(A);
Arrays.sort(B);
int sum = 0;
for(int i=0;i<N;i++) {
sum += A[i] *B[N-i-1];
}
System.out.println(sum);
}
}
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 9653번 스타워즈 로고 자바(Java) (0) | 2021.03.12 |
---|---|
[백준 알고리즘] 백준 5554번 심부름 가는 길 자바(Java) (0) | 2021.03.12 |
[백준 알고리즘] 백준 14888번 연산자 끼워넣기 자바(Java) (0) | 2021.03.08 |
[백준 알고리즘] 백준 15815번 천재 수학자 성필 C++ (0) | 2021.03.07 |
[백준 알고리즘] 백준 2810번 컵홀더 자바(Java) (0) | 2021.03.05 |
[백준 알고리즘] 백준 2563번 색종이 파이썬(Python) (2) | 2021.03.05 |
[백준 알고리즘] 백준 2751번 수 정렬하기2 자바(Java) (0) | 2021.03.04 |
[백준 알고리즘] 백준 1003번 피보나치 함수 자바(Java) (0) | 2021.03.04 |
최근댓글