본문 바로가기

알고리즘_파이썬

백준 1026 보물

 

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