n,m을 입력받습니다.
주의할점은 뽑은 3장의 카드합이 m보다 크면 안되고 최대한 m에 가까운값을 찾아야 한다는 것입니다.
브루트포스 알고리즘 문제로 가능한 모든 경우를 단순히 다 따져주면 되는 문제입니다.
어렵지 않기 때문에 코드만 첨부하겠습니다.
#include<iostream>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int* arr=new int[n];
for(int i=0; i<n; i++)
{
cin>>arr[i];
}
int sum=-1;
for(int i=0; i<n-2; i++) //n장중에서 3장뽑는 경우의수: n*(n-1)*(n-2)/6
{
for(int j=i+1; j<n-1; j++)
{
for(int k=j+1; k<n; k++)
{
int temp=arr[i]+arr[j]+arr[k];
if(temp<=m && (m-sum)>(m-temp)) //m에 더 가까운 것을 sum변수에 저장
{
sum=temp;
}
}
}
}
cout<<sum;
delete[] arr;
}
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준-덩치(7568번) (0) | 2022.08.11 |
---|---|
백준-분해합(2231번) (0) | 2022.08.07 |
백준-하노이 탑 이동 순서(11729번) (0) | 2022.08.05 |
백준-별 찍기 -10(2447번) (0) | 2022.08.04 |
백준-재귀함수가 뭔가요?(17478번) (0) | 2022.08.03 |