728x90
반응형

문제

https://www.acmicpc.net/problem/1026

 

1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거

www.acmicpc.net

 

문제 접근

가장 작은 값을 만들기 위해서는 (a 배열에서 가장 큰 값 * b 배열에서 가장 작은 값) 에서 (a 배열에서 가장 작은 값 * b 배열에서 가장 큰 값) 의 형태로 더해줘야지 최솟값이 나오게 된다. 즉, 그리디를 사용하자!

 

코드

n = int(input())

a = list(map(int,input().split()))
b = list(map(int,input().split()))

a.sort()
b.sort(reverse = True)

sum = 0
for i in range(0,n):
    sum += a[i]*b[i]

print(sum)

 

배운점

쉬운 그리디 문제는 보통 리스트와 그에 대한 정렬을 이용해서 많이 풀 수 있다는 것을 느낄 수 있었다.

728x90
반응형

+ Recent posts