✏️ 문제
문제 파악
배열 A를 오름차순, 배열 B를 내림차순으로 배열한 후 각각 곱해주면 제일 쉽게 해결할 수 있으나 배열 B를 재배열하면 안된다는 조건을 넣으면 생각을 좀 해야한다.
배열 A에서 최소값, 배열 B에서 최대값은 max, min 함수를 통해 가져올 수 있다. 그 후 각각의 배열에서 지우면 최소값, 최대값이 갱신되어 계속해서 뽑아낼 수 있을 것이다. 이를 활용하자!
알고리즘
- 수학
- 그리디 알고리즘
- 정렬
코드
- 배열 B 재배열 가능
N = int(input())
s = 0
A = list(map(int, input().split()))
B = list(map(int, input().split()))
A.sort()
B.sort(reverse=True)
for i in range(N):
s += A[i]*B[i]
print(s)
- 배열 B 재배열 불가능
N = int(input())
s = 0
A = list(map(int, input().split()))
B = list(map(int, input().split()))
for i in range(N):
s += min(A)*max(B)
A.pop(A.index(min(A)))
B.pop(B.index(max(B)))
print(s)
'PS > 백준' 카테고리의 다른 글
[Python] 1439번 뒤집기 (0) | 2024.07.15 |
---|---|
[Python] 13305번 주유소 (0) | 2024.07.15 |
[Python] 1931번 회의실 배정 (0) | 2024.07.14 |
[Python] 1541번 잃어버린 괄호 (0) | 2024.07.14 |
[Python] 2217번 로프 (2) | 2024.07.14 |