1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거�
www.acmicpc.net
B에 있는 수는 재배열하지 말라고 했지만, 어차피 문제를 푸려면 정렬해야한다.
당연히 S의 최솟값을 구하려면 A의 가장 큰 수와 B의 가장 작은 수를 계속 곱해주면서 더해야한다.
A은 오름차순으로, B는 내림차순으로 정렬해준뒤 곱해주자. sort함수와 sort함수의 3번째 매개변수 comp를 잘 활용.
#include <cstdio>
#include <algorithm>
using namespace std;
bool comp(int a, int b){
return a>b;
}
int main(void){
int N, ans=0;
scanf("%d", &N);
int arr1[N], arr2[N];
for(int i=0; i<N; i++){
scanf(" %d", &arr1[i]);
}
for(int i=0; i<N; i++){
scanf(" %d", &arr2[i]);
}
sort(arr1, arr1+N);
sort(arr2, arr2+N, comp);
for(int i=0; i<N; i++){
ans += arr1[i]*arr2[i];
}
printf("%d", ans);
}
'BOJ 길라잡이' 카테고리의 다른 글
[C/C++ 백준 1874번] 스택 수열 (Silver 3) (1) | 2020.10.08 |
---|---|
[C/C++ 백준 10867번] 중복 빼고 정렬하기 (Silver 5) (0) | 2020.10.07 |
[C/C++ 백준 1406번] 에디터 (Silver 3) (0) | 2020.10.07 |
[C/C++ 백준 10989번] 수 정렬하기 (Silver 4) (0) | 2020.10.07 |
[C/C++ 백준 2750번] 수 정렬하기 (Silver 5) (0) | 2020.10.07 |