티스토리 뷰
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
|
n = int(input())
a_list = list(map(int, input().split()))
b_list = list(map(int, input().split()))
s = 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
'Algorithm > Implementation' 카테고리의 다른 글
(Python) - BOJ(1138번) : 한 줄로 서기 (0) | 2022.01.25 |
---|---|
(Python) - BOJ(1043번) : 거짓말 (0) | 2022.01.25 |
(Python) - BOJ(1018번) : 체스판 다시 칠하기 (0) | 2022.01.24 |
(Python) - 프로그래머스 : 핸드폰 번호 가리기 (0) | 2022.01.24 |
(Python) - 프로그래머스 : 시저 암호 (0) | 2022.01.24 |
댓글
© 2022 WonSeok, All rights reserved