오랜만에 코딩테스트 문제를 다시 풀어보았다.
곱셈의 값들이 각각 가장 작게 되도록 만드는 방법을 생각하는 것이었다.
가장 큰 값에 가장 작게 곱셈을 해줄때 최종 합이 가장 작을것이라는 아이디어로 풀어보았다.
각 리스트를 정방향, 역방향으로 정렬한 후에
excel에서 쓴 sumproduct를 구현해보았다.
[x*y for (x,y) in zip(list_1,list_2)]
이 부분이 sumproduct인데 알아두면 두고두고 유용하게 써먹을 코드가 될 것 같다.
# 1026 보물
n = int(input())
# 각 데이터를 공백으로 구분하여 입력값을 받는다.
list_1 = list(map(int, input().split()))
list_2 = list(map(int, input().split()))
list_1.sort()
list_2.sort(reverse=True)
res = [x*y for (x,y) in zip(list_1,list_2)]
print(sum(res))
728x90
'알고리즘 문제풀이 > Greedy' 카테고리의 다른 글
백준 1715 파이썬 (그리디) (0) | 2021.12.14 |
---|---|
백준 10610 파이썬(그리디) (0) | 2021.12.13 |
백준 2720 파이썬(그리디) (0) | 2021.10.02 |
백준 1339 파이썬(그리디) (0) | 2021.10.02 |
백준 1789 파이썬(그리디) (0) | 2021.10.02 |