반응형
문제
입력
첫째 줄에 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가 최솟값이 된다
반응형
'Develop > 알고리즘' 카테고리의 다른 글
[백준/Python] Silver IV #1748 수 이어 쓰기 1 (0) | 2023.01.11 |
---|---|
[백준/Python] Silver IV #2217 로프 (0) | 2023.01.04 |
[백준/Python] Bronze V #26711 A+B (0) | 2023.01.04 |
[백준/Python] Bronze V #25314 코딩은 체육과목 입니다 (0) | 2023.01.04 |
[백준/Python] Bronze V #17256 달달함이 넘쳐흘러 (0) | 2023.01.02 |
Comment