뚜루리 2024. 12. 10. 00:00
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