티스토리 뷰

BOJ

백준 1026번: 보물

혀내 2022. 1. 31. 22:59
반응형

 

풀이

  S의 값을 가장 작게 만들기 위해서 A에서 가장 큰 숫자를, B에서 가장 작은 숫자와 곱해주면 된다. 문제에는 B를 재배열하면 안된다고 적혀있지만 우리는 S의 최솟값만 출력하면 되기 때문에.. 😋 입력받은 A와 B를 오름차순으로 정렬해주자. 그 다음, 차례대로 A[0]을 B[N-1]과, A[1]을 B[N-2]와 곱해서 더해주면 된다.

 


코드

#include <iostream>
#include <algorithm>
#define MAX 50

using namespace std;

void init() {
	cin.tie(0); cout.tie(0);
	ios_base::sync_with_stdio(0);
}

int N;
int A[MAX];
int B[MAX];
int S = 0;

int main() {
	cin >> N;

	for (int i = 0; i < N; i++) cin >> A[i];
	for (int i = 0; i < N; i++) cin >> B[i];

	sort(A, A + N);
	sort(B, B + N);

	for (int i = 0; i < N; i++)
		S += A[i] * B[N - 1 - i];

	cout << S;
	return 0;
}
반응형

'BOJ' 카테고리의 다른 글

백준 11656번: 접미사 배열  (0) 2022.01.31
백준 8892번: 팰린드롬  (0) 2022.01.31
백준 11091번: 알파벳 전부 쓰기  (0) 2022.01.31
백준 1448번: 삼각형 만들기  (0) 2022.01.31
백준 5525번: IOIOI  (0) 2022.01.31