[코딩테스트 준비 C++] 보물

정우·2022년 9월 23일
0
post-thumbnail

오늘 푼 문제

https://www.acmicpc.net/problem/1026

보물

  • 풀이 방식
1. 재배열할 수 있는 경우는 A뿐이기에 A를 오름차순으로 정렬
2. A의 첫번째 원소는 반드시 최소값이기에 B 배열 중 가장 큰 원소 값을 곱함
3. 한번 곱하는 과정이 나온 B 배열 원소의 인덱스를 저장한 후 true표시

나의 풀이

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {

	int N, A, B;

	int result = 0;

	int cnt = 0;

	int a[101];
	int b[101];

	bool check[51] = {false};

	cin >> N;

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

	sort(a , a+N);
	
	for (int i = 0; i < N; i++) {
		int max = 0;
		for (int k = 0; k < N; k++) {
			if (max < b[k] && check[k] == false) {
				max = b[k];
				cnt = k;
			}
		}
		check[cnt] = true;
		result += a[i] * max;
	}

	cout << result;


	return 0;
}
profile
개발 일기장

0개의 댓글