알고리즘
백준(BOJ) 1026 보물
짬뽕얼큰하게
2018. 11. 26. 11:21
이 문제는 A만 재배열하라고 했지만, A의 재배열을 통해 B에 대응하는 방법을 생각하면 50! 의 복잡도가 나오게 된다.
따라서 A B를 정렬하여 A배열의 가장 낮은값과 B배열의 가장 높은값일 곱했다.
B 재배치는 하지말라 하였으나, A배열의 순서 출력이 아니라 최소 비용의 출력이기때문에 A, B를 재배치하여 최소값을 구하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <iostream> #include <cstdio> #include <algorithm> using namespace std; int A[100]; int B[100]; int main(void){ int N; scanf("%d", &N); for(int i = 0 ; i < N; i++){ scanf("%d", A + i); } for(int i = 0 ; i < N; i++){ scanf("%d", B + i); } sort(A, A + N); sort(B, B + N); int sum = 0; for(int i = 0; i < N; i++){ sum += A[i] * B[N - 1 - i]; } printf("%d", sum); } | cs |