문제
문제 이해
- 길이가 N인 정수 배열 A와 B
- S = A[0] × B[0] + ... + A[N-1] × B[N-1]
- S의 값을 최소화하기 위해 A의 수 재배열, B의 수는 재배열 X
- A의 수를 재배열하나 A, B의 수를 재배열하나 결과는 달라지지 않음
- A의 수는 모든 B의 수와 연산이 될 수 있기 때문
풀이
B의 가장 큰 수를 A의 가장 작은 수와 곱하게 만들어 최솟값 계산
A와 B를 모두 조작해도 관계없기 때문에 A와 B를 정렬하여 계산
- A를 내림차순으로 정렬
- B를 오름차순으로 정렬
- A와 B의 각 원소의 곱을 계산
코드
import sys
input = sys.stdin.readline
n = int(input())
A = sorted(list(map(int, input().split())), reverse=True)
B = sorted(list(map(int, input().split())))
s = 0
for Ai, Bi in zip(A, B):
s += Ai * Bi
print(s)
'알고리즘 연습 > 백준' 카테고리의 다른 글
[Python - 1051] 숫자 정사각형 (S3) (0) | 2024.06.17 |
---|---|
[Python - 1049] 기타줄 (S4) (0) | 2024.06.13 |
[Python - 17299] 오등큰수 (G3) (0) | 2024.05.24 |
[Python - 24511] queuestack (S3) (0) | 2024.05.21 |
[Python - 28278] 스택 2 (S4) (0) | 2024.05.15 |