PS/백준
[ 백준 ] 1026번 : 보물 - (C++/C, JAVA/자바, PYTHON/파이썬)
발효홍삼
2022. 2. 28. 03:03
728x90
- 문제
https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
- 풀이법 ( 알고리즘 )
최솟값을 만들어야하기 때문에 정수 배열 A에서 가장 작은 값과 정수 배열 B에서 가장 큰 값끼리 곱한 후 답을 저장하는 변수에 더한다. 이를 반복한다.
- 풀이법 - C++ ( C )
더보기
#include <iostream>
#include <algorithm>
using namespace std;
int n; // n : 정수 배열 A, B의 길이
int A[101], B[101]; // A[x] : 정수 배열 , B[x] : 정수 배열
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//input
cin >> n;
for (int i = 0; i < n; i++)
cin >> A[i];
for (int i = 0; i < n; i++)
cin >> B[i];
//solve
sort(A, A + n);
sort(B, B + n);
int sum = 0;
for (int i = 0; i < n; i++)
{
sum += A[i] * B[n - i - 1];
}
//output
cout << sum;
return 0;
}
- 풀이법 - JAVA
더보기
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);
}
}
- 풀이법 - PYTHON
더보기
n = int(input())
A = []
B = []
A = list(map(int, input().split()))
B = list(map(int, input().split()))
A.sort(reverse=True)
B.sort()
sum = 0
for i in range(n):
sum += A[i] * B[i]
print(sum)
728x90