문제
백준 1026번 보물 https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
코드
#include<iostream>
#include<algorithm>
using namespace std;
int n, a[55], b[55];
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);
int res = 0;
for (int i = 0; i < n; i++)res += a[i] * b[n - 1 - i];
cout << res;
}
풀이방법
a는 작은 순서대로, b는 큰 순서대로 서로 곱해주며 더한 값을 반환한다.
고민과정
그냥...딱봐도 큰애들끼리 곱하는걸 피해야할거같아서 각자 정렬하고 순서대로 곱해줬더니 맞았다 ! 사실 너무 직관에 의존하는 것 같아서 고민이다..
n 크기가 작길래 여차하면 55!만큼 그냥 브루트포스로 다 돌려버릴까 했는데 다행히 직관이 맞았다.
'algorithm > Sorting, Binary Search' 카테고리의 다른 글
[C++] BOJ 11656 접미사 배열 (0) | 2022.01.12 |
---|---|
[C++] BOJ 1920 수 찾기 (0) | 2021.05.08 |
[C++] BOJ 10815 숫자 카드 (0) | 2021.05.08 |
[C++] BOJ 11399 ATM (0) | 2021.05.08 |
[C++] BOJ 16401 과자 나눠주기 (0) | 2021.05.08 |