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
반응형
'코딩테스트' 카테고리의 다른 글
| [알고리즘] 백준 10162번 전자레인지 파이썬 (0) | 2023.01.09 |
|---|---|
| [알고리즘] 백준 5585번 거스름돈 파이썬 (0) | 2023.01.09 |
| [알고리즘] 백준 11399번 ATM (0) | 2023.01.02 |
| [알고리즘] 백준 11047번 동전0 (0) | 2023.01.02 |
| [알고리즘] 그리디 알고리즘 (Greedy Algorithm) (0) | 2023.01.02 |