
https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
S의 최소값을 어떻게 구할수 있을까는 사실 A와 B를 어떻게 재배열하는지에 달려있다. 만약 A와 B를 오름, 내림 차순 또는 그 반대로 서로 최소와 최대가 교차하도록 배열하고 반복문을 통해 i 가 1부터 N까지 A[i]*B[i]를 더 해가면 될 것이다. 따라서 코드는 다음과 같이 나온다.
N = int(input())
A = list(map(int, input().split(' ',N)))
B = list(map(int, input().split(' ',N)))
A.sort()
B.sort(reverse = True)
S = 0
for i in range(N):
S += A[i] * B[i]
print(S)
'알고리즘_파이썬' 카테고리의 다른 글
| 백준 10876 중복 빼고 정렬하기 (0) | 2024.01.20 |
|---|---|
| 백준 11651 좌표 정렬하기2 (0) | 2024.01.20 |
| 백준 2805 나무 자르기 (0) | 2024.01.20 |
| 백준 1260 DFS와 BFS (0) | 2024.01.19 |
| 백준 10816 숫자카드 2 (0) | 2024.01.19 |