※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 15728번 문제인 에리 - 카드이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/15728
15728번: 에리 - 카드
첫째 줄에 N, K(0 ≤ K < N ≤ 100)가 주어지고 둘째 줄에는 N개의 ‘공유 숫자카드’에 적혀 있는 정수, 셋째 줄에는 N개의 ‘팀 숫자카드’에 적혀 있는 정수가 주어진다. 이 수는 -10,000보다 크거나
www.acmicpc.net
K개의 팀 카드를 버리는 과정과 현재의 팀 카드로 최대의 점수를 내는 과정을 직접 시뮬레이션해보자.
가능한 카드의 조합은 최대 100개의 공유카드와 팀 카드의 쌍의 개수와 같으므로 10,000가지밖에 되지 않는다.
가능한 카드의 조합 중 가장 점수가 큰 경우와 그 때의 우리 팀 카드의 번호가 무엇인지를 기억하고, 모든 경우의 수를 살핀 다음 현재 최대점을 만들 때 사용한 우리 팀 카드를 배제하는 시뮬레이션을 돌리면 문제를 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int arr1[100];
int arr2[100];
bool visited[100];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N, K; cin >> N >> K;
for (int i = 0; i < N; i++) cin >> arr1[i];
for (int i = 0; i < N; i++) cin >> arr2[i];
int ans, pos;
for (int k = -1; k < K; k++) {
ans = -1000000007, pos = -1;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (visited[j]) continue;
if (arr1[i] * arr2[j] > ans) ans = arr1[i] * arr2[j], pos = j;
}
}
visited[pos] = 1;
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 25305 // C++] 커트라인 (0) | 2022.06.27 |
---|---|
[BOJ 20009 // C++] 형곤이의 소개팅 (0) | 2022.06.27 |
[BOJ 11366 // C++] Tons of Orcs, no Fibbin' (0) | 2022.06.26 |
[BOJ 15727 // C++] 조별과제를 하려는데 조장이 사라졌다 (0) | 2022.06.26 |
[BOJ 11369 // C++] Safe Zone (0) | 2022.06.26 |