티스토리 뷰

728x90

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

 

  • 해설 :

숫자가 담겨있는 A와 B 배열이 주어질 때 A[0] * B[0] + A[1] * B[1] + ...... + A[n-1] * B[n-1] 의 최솟값을 구하는 문제이다. 단,  B정렬은 재배열할 수 없다는 조건이 있다.

 

 

 

 

  • 풀이 :

A배열과 B배열을 한 쪽은 오름차순, 한 쪽은 내림차순으로 정렬한 후 0번 인덱스부터 n-1번 인덱스까지 더해주면 되는 문제인데 B배열을 정렬할 수 없다는 조건이 있다.

 

Python의 min과 max 함수를 이용하여 각 배열의 최솟값과 최댓값을 곱해준 뒤 답에 더해준다. 이후 배열에서 방금 사용한 값을 삭제해주는 식으로 구현하였다. 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
= int(input())
 
a_list = list(map(int, input().split()))
b_list = list(map(int, input().split()))
 
= 0
for i in range(n):
    s += min(a_list) * max(b_list)
    a_list.pop(a_list.index(min(a_list)))
    b_list.pop(b_list.index(max(b_list)))
 
print(s)
cs
320x100
댓글
© 2022 WonSeok, All rights reserved