백준 1026번 보물
보물 문제 바로 가기
문제 설명
문제:
길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자.
S = A[0] × B[0] + A[1] × B[1] + ... + A[N-1] × B[N-1]
S의 값을 최소로 만들기 위해 A의 수를 재배열하자. 단, B는 재배열하면 안 된다.
입력:
- 첫째 줄에 N이 주어진다. - 둘째 줄에는 A에 있는 N개의 수가 주어진다. - 셋째 줄에는 B에 있는 N개의 수가 주어진다.
(단, N ≤ 50, 각 수는 0 이상 100 이하의 정수)
출력:
- S의 최솟값을 출력한다.
길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자.
S = A[0] × B[0] + A[1] × B[1] + ... + A[N-1] × B[N-1]
S의 값을 최소로 만들기 위해 A의 수를 재배열하자. 단, B는 재배열하면 안 된다.
입력:
- 첫째 줄에 N이 주어진다. - 둘째 줄에는 A에 있는 N개의 수가 주어진다. - 셋째 줄에는 B에 있는 N개의 수가 주어진다.
(단, N ≤ 50, 각 수는 0 이상 100 이하의 정수)
출력:
- S의 최솟값을 출력한다.
풀이 코드 (Python)
N = int(input())
num1 = list(map(int, input().split()))
num2 = list(map(int, input().split()))
num1.sort()
num2.sort(reverse=True)
total = 0
for i in range(N):
total += num1[i] * num2[i]
print(total)
해결 전략
- A 리스트는 오름차순으로, B 리스트는 내림차순으로 정렬
- 각 인덱스별로 곱해서 누적합 계산