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 |
뚜루리님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.