728x90
320x100
구현
N = int(input())
arr1 = list(map(int, input().split()))
arr2 = list(map(int, input().split()))
arr1.sort()
arr2.sort(reverse=True)
answer = 0
for i in range(N):
answer += arr1[i] * arr2[i]
print(answer)
- 그리디 알고리즘을 활용
- 하나는 오름차순 정렬, 나머지 하나는 내림차순 정렬을 하여 서로 곱하여 모두 더해주는 방식으로 품.
(+) 풀이
arr2.sort(reverse=True)
arr2 = sorted(arr2)[::-1]
위 두개의 정렬 방법은 동일하다.
for i in range(N):
answer += arr1[i] * arr2[i]
for a, b in zip(arr1, arr2):
answer += a * b
위 두개의 For문도 동일하다. zip 함수를 쓰면 같은 인덱스끼리 묶어준다.
728x90
320x100
'💻 하나씩 차곡차곡 > 백준알고리즘 (Python,Java)' 카테고리의 다른 글
백준 2503번 야구게임 파이썬 (0) | 2024.12.12 |
---|---|
백준 1461번 파이썬 (0) | 2024.12.11 |
백준 5585번 파이썬 (0) | 2024.12.06 |
백준 1182번 파이썬 (0) | 2024.11.14 |
백준 23246번 파이썬 (0) | 2024.10.15 |