😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[BAEKJOON C++] 1026_보물 본문

πŸ¦₯ μ½”ν…Œ/BAEKJOON

[BAEKJOON C++] 1026_보물

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 7. 28. 00:24
728x90
λ°˜μ‘ν˜•
μ˜›λ‚  μ˜›μ μ— μˆ˜ν•™μ΄ ν•­μƒ ν° κ³¨μΉ«κ±°λ¦¬μ˜€λ˜ λ‚˜λΌκ°€ μžˆμ—ˆλ‹€. 
이 λ‚˜λΌμ˜ κ΅­μ™• κΉ€μ§€λ―Όμ€ λ‹€μŒκ³Ό κ°™μ€ λ¬Έμ œλ₯Ό λ‚΄κ³  ν° μƒκΈˆμ„ κ±Έμ—ˆλ‹€.

길이가 N인 μ •μˆ˜ λ°°μ—΄ A와 Bκ°€ μžˆλ‹€. λ‹€μŒκ³Ό κ°™μ΄ ν•¨μˆ˜ Sλ₯Ό μ •μ˜ν•˜μž.
S = A[0] × B[0] + ... + A[N-1] × B[N-1]

S의 κ°’을 κ°€μž₯ μž‘κ²Œ λ§Œλ“€κΈ° μœ„ν•΄ A의 μˆ˜λ₯Ό μž¬λ°°μ—΄ν•˜μž. 
단, B에 μžˆλŠ” μˆ˜λŠ” μž¬λ°°μ—΄ν•˜λ©΄ μ•ˆ λœλ‹€.
S의 μ΅œμ†Ÿκ°’을 μΆœλ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯
첫째 μ€„에 N이 μ£Όμ–΄μ§„λ‹€. 
λ‘˜μ§Έ μ€„μ—λŠ” A에 μžˆλŠ” N개의 μˆ˜κ°€ μˆœμ„œλŒ€λ‘œ μ£Όμ–΄μ§€κ³ , 
μ…‹μ§Έ μ€„μ—λŠ” B에 μžˆλŠ” μˆ˜κ°€ μˆœμ„œλŒ€λ‘œ μ£Όμ–΄μ§„λ‹€. 
N은 50보닀 μž‘κ±°λ‚˜ κ°™μ€ μžμ—°μˆ˜μ΄κ³ , 
A와 B의 κ° μ›μ†ŒλŠ” 100보닀 μž‘κ±°λ‚˜ κ°™μ€ μŒμ΄ μ•„λ‹Œ μ •μˆ˜μ΄λ‹€

좜λ ₯
첫째 μ€„에 S의 μ΅œμ†Ÿκ°’을 μΆœλ ₯ν•œλ‹€.
// [1026] 보물

/*
μ˜›λ‚  μ˜›μ μ— μˆ˜ν•™μ΄ 항상 큰 κ³¨μΉ«κ±°λ¦¬μ˜€λ˜ λ‚˜λΌκ°€ μžˆμ—ˆλ‹€. 
이 λ‚˜λΌμ˜ κ΅­μ™• 김지민은 λ‹€μŒκ³Ό 같은 문제λ₯Ό λ‚΄κ³  큰 μƒκΈˆμ„ κ±Έμ—ˆλ‹€.

길이가 N인 μ •μˆ˜ λ°°μ—΄ A와 Bκ°€ μžˆλ‹€. λ‹€μŒκ³Ό 같이 ν•¨μˆ˜ Sλ₯Ό μ •μ˜ν•˜μž.
S = A[0] × B[0] + ... + A[N-1] × B[N-1]

S의 값을 κ°€μž₯ μž‘κ²Œ λ§Œλ“€κΈ° μœ„ν•΄ A의 수λ₯Ό μž¬λ°°μ—΄ν•˜μž. 
단, B에 μžˆλŠ” μˆ˜λŠ” μž¬λ°°μ—΄ν•˜λ©΄ μ•ˆ λœλ‹€.
S의 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯
첫째 쀄에 N이 주어진닀. 
λ‘˜μ§Έ μ€„μ—λŠ” A에 μžˆλŠ” N개의 μˆ˜κ°€ μˆœμ„œλŒ€λ‘œ 주어지고, 
μ…‹μ§Έ μ€„μ—λŠ” B에 μžˆλŠ” μˆ˜κ°€ μˆœμ„œλŒ€λ‘œ 주어진닀. 
N은 50보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄κ³ , 
A와 B의 각 μ›μ†ŒλŠ” 100보닀 μž‘κ±°λ‚˜ 같은 음이 μ•„λ‹Œ μ •μˆ˜μ΄λ‹€

좜λ ₯
첫째 쀄에 S의 μ΅œμ†Ÿκ°’μ„ 좜λ ₯ν•œλ‹€.
*/

#define _CRT_SECURE_NO_WARNINGS
// ν‘œμ€€ μŠ€νŠΈλ¦Όμ—μ„œ 읽기 및 μ“°κΈ°λ₯Ό μ œμ–΄ν•˜λŠ” 개체λ₯Ό μ„ μ–Έ
#include <iostream>
#include <algorithm>    // find
#include <string>
#include <cmath>        // abs
#include <vector>
using namespace std;

int main() {
	vector<int> a;
	vector<int> b;
	int N;
	int num;

	cin >> N;
	for (int i = 0; i < N; i++)
	{
		cin >> num;
		a.push_back(num);
	}

	for (int i = 0; i < N; i++)
	{
		cin >> num;
		b.push_back(num);
	}

	sort(a.begin(), a.end());
	sort(b.begin(), b.end(), greater<>());
	int res = 0;
	for (int i = 0; i < N; i++) {
		res += a[i] * b[i];
	}
	cout << res;
    return 0;
}

728x90
λ°˜μ‘ν˜•
Comments