본문 바로가기
Develop/알고리즘

[백준/Python] Silver IV #1026 보물

by favorcat 2023. 1. 2.
반응형
 

1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거

www.acmicpc.net

문제

입력

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다.

출력

첫째 줄에 S의 최솟값을 출력한다.

풀이

n = int(input())
a = list(map(int,input().split()))
b = list(map(int,input().split()))

a.sort(reverse=True)
b.sort()

s = 0
for i in range(n):
    s += a[i]*b[i]
print(s)

배열 A, B가 길이 N만큼 존재하고, 배열 A의 수를 재배열하여
S = A[0] × B[0] + ... + A[N-1] × B[N-1]가 가장 최솟값이 되도록 하여 최솟값 S를 출력하는 문제이다.

가장 최솟값이 되기 위해서는 배열 A와 배열 B의 수가 각각 큰 수 * 작은 수가 되어야 한다.
이 문제에서는 재배열된 배열을 출력하라고 하지 않았기 때문에,
A는 큰 수 부터 정렬하도록 하고, B는 작은 수 부터 정렬하도록 하여 각 요소를 곱하여 S에 더해주면 S가 최솟값이 된다

 

반응형

Comment