반응형
문제는 다음과 같습니다.
https://www.acmicpc.net/problem/2798
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
풀이 코드는 다음과 같습니다.
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n,m;
int max{0};
cin>>n>>m;
vector<int>v(n);
for(int i{0};i<n;i++)
{
cin>>v[i];
}
for(int i{0};i<n;i++)
{
for(int j{i+1};j<n;j++)
{
for(int k{j+1};k<n;k++)
{
int total=v[i]+v[j]+v[k];
if(total>max&&m>=total)
max=total;
}
}
}
cout<<max;
}
조금이라도 더 간단한 방법을 찾아보려고 했지만 문제의 분야가 부르트포스 알고리즘이기도 하고 3장만 뽑아서 하기 때문에 생각보다는 시간이 많이 걸리지 않겠구나 싶어서 삼중 for문을 사용했습니다.
반응형
'백준 문제풀이' 카테고리의 다른 글
19532 번 : 수학은 비대면강의입니다 (0) | 2023.05.03 |
---|---|
2231 번 : 분해합 (0) | 2023.05.03 |
24313 번 : 알고리즘 수업 - 점근적 표기 1 (0) | 2023.04.29 |
24267 번 : 알고리즘 수업 - 알고리즘의 수행 시간 6 (0) | 2023.04.29 |
24266 번 : 알고리즘 수업 - 알고리즘의 수행 시간 5 (0) | 2023.04.29 |