개발 연습장/백준 문제풀이

[파이썬, Python] 백준 1026: 보물

LooanCheong 2023. 4. 5. 11:06
반응형

문제

https://www.acmicpc.net/problem/1026

 

1026번: 보물

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

www.acmicpc.net

코드

n = int(input())
a_list = sorted(list(map (int, input().split())))
b_list = sorted(list(map (int, input().split())), reverse = True)

ans = 0
for i in range(n):
    ans += a_list[i] * b_list[i]

print(ans)

설명

두 리스트의 수를 곱한 수를 더해서 최솟값이 나오려면 가장 큰 수와 작은 수를 곱해서 나오는 값을 최소화해야 한다.

이를 위해 한 리스트는 오름차순, 다른 리스트는 내림차순으로 정렬해 준다.
문제에 B를 재배열하면 안 된다고 쓰여있는데 더하면 똑같기 때문에 상관없다.

이후 각 리스트의 곱을 더한 값을 출력해 주면 된다.

반응형