공부/백준(C++) - 2022~

백준 2798번: 블랙잭 [C++]

상연 2022. 1. 25. 20:09

목차

    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 sum_triple(vector<int> v, int index)
    {
    	return v[index] + v[index+1] + v[index+2];
    }
    
    
    int main()
    {
    	int n, m, answer = -1;
    	vector<int> cards;
    	cin >> n >> m;
    	
    	for(int i=0; i<n; i++)
    	{
    		int temp;
    		cin >> temp;
    		cards.push_back(temp);
    	}
    	//solve
    	for(int i = 0; i < n - 2; i++)
    	{
    		for(int j = i+1; j < n - 1; j++)
    		{
    			for(int k = j+1; k < n; k++)
    			{
    				int sum = cards[i] + cards[j] + cards[k];
    				if(sum <= m && sum > answer)
    				{
    					answer = sum;
    				}
    			}
    		}
    	}
    	cout << answer;
    }

    설명

    브루트포스 문제는 크게 설명할게 없다.

    모든 경우의 수를 다 검사해서 결과를 도출한다는 방식으로 접근하면 되기때문이다.

    주어진 카드 N개를 3개씩 조합하는 모든 경우의 수를 검사해서 가장 M 이하에 근사한 값을 도출하면 된다.

    '공부 > 백준(C++) - 2022~' 카테고리의 다른 글

    백준 7568번: 덩치 [C++]  (0) 2022.01.25
    백준 2231번: 분해합 [C++]  (0) 2022.01.25
    백준 1002번: 터렛 [C++]  (0) 2022.01.23
    백준 2447번: 별 찍기-10 [C++]  (0) 2022.01.23
    백준 10870번: 피보나치 수 5 [C++]  (0) 2022.01.23