알고리즘 문제풀이/Greedy

백준 1026 파이썬(그리디)

Aytekin 2021. 12. 10. 19:21

오랜만에 코딩테스트 문제를 다시 풀어보았다.

 

곱셈의 값들이 각각 가장 작게 되도록 만드는 방법을 생각하는 것이었다.

가장 큰 값에 가장 작게 곱셈을 해줄때 최종 합이 가장 작을것이라는 아이디어로 풀어보았다.

 

각 리스트를 정방향, 역방향으로 정렬한 후에

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