반응형
문제
https://www.acmicpc.net/problem/1026
코드
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를 재배열하면 안 된다고 쓰여있는데 더하면 똑같기 때문에 상관없다.
이후 각 리스트의 곱을 더한 값을 출력해 주면 된다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 15649: N과 M (1) (0) | 2023.04.07 |
---|---|
[파이썬, Python] 백준 1927: 최소 힙 (0) | 2023.04.06 |
[파이썬, Python] 백준 1010: 다리 놓기 (0) | 2023.04.04 |
[파이썬, Python] 백준 25314: 코딩은 체육과목 입니다 (0) | 2023.04.03 |
[파이썬, Python] 백준 11382: 꼬마 정민 (0) | 2023.03.31 |