[백준 파이썬] 보물 1026
문제
길이가 N인 정수 배열 A와 B가 있다 다음과 같이 함수 S를 정의하자.
S의 값을 가장 작게 만들기 위해 A의 수를 재배열 하자 단, B에 있는 수는 재배열하면 안 된다.
S의 값이 최소가 되는 프로그램을 작성하라.
입력
첫째줄에 N이 주어진다.
둘째 줄에는 A의 배열이 주어진다.
셋째 줄에는 B의 배열의 주어진다.
출력
첫째줄에 S의 최솟값을 출력한다.
풀이
A배열만 움직여 B배열과 곱셈을 하여 모든 값을 다 더한 값을 S이다. 이때 A배열의 인덱스만 움직여야 한다고 한다.
B배열의 값들의 위치는 정해져 있고 최솟값이 되기 위해서는 B배열의 높은 값을 A배열의 가장 낮은 값을 곱셈하도록 만들어주면 가장 낮은 S값이 된다.
결론은 A 배열을 오름차순으로 정렬한고 B배열을 내림차순으로 정렬하여 정렬된 두 배열을 각 이덱맞춰서 곱해주면 최솟값이 나오게 된다.
코드
n=int(input())
a_list=list(map(int,input().split()))
b_list=list(map(int,input().split()))
a_list.sort()
b_list.sort(reverse=True)
ans=0
for i in range(n):
ans+=a_list[i]*b_list[i]
print(ans)
반응형
'파이썬 문제풀이 > 그리드' 카테고리의 다른 글
[백준 파이썬] 2109 순회강연 (1) | 2024.10.24 |
---|---|
[백준 파이썬] 19598 최소 회의실 개수 (0) | 2024.03.07 |
[백준 1700 파이썬] 멀티탭 스케줄링 (1) | 2024.02.16 |
[백준 1789 파이썬] 수들의 합 (1) | 2024.02.08 |
[백준 11508 파이썬] 2+1 세일 풀이 (2) | 2024.01.24 |