최대 1 분 소요

Level 10 부터는 한 문제씩 포스팅 할생각이다.
(이전단계에 어려웠던 것들도 재 포스팅 할 예정이다)

Question

Question


Solution

  • 주어진 카드를 vector에 저장한다
  • 그중 3장을 뽑아 더한다, 모든 경우의 수를 차례로 확인한다
  • 제시된 숫자와 가장 근접한 합을 찾아 출력한다

Cord

#include <iostream>
#include <vector>

using namespace std;

int main()
{
	int answer = 0;

	// 입력
	int cards, target;
	cin >> cards >> target;

	// 주어진 카드들을 vector에 순서대로 저장
	vector<int> vCards(cards);

	for (int idx = 0; idx < cards; idx++)
	{
		cin >> vCards[idx];
	}

	// 세 장의 카드 뽑기
	for (int i = 0; i < cards - 2; i++)
	{
		for (int j = i + 1; j < cards - 1; j++)
		{
			for (int k = j + 1; k < cards; k++)
			{
				int sum = vCards[i] + vCards[j] + vCards[k];

				// 가장 근접한 세 장의 합 찾기 
				if (sum > answer && sum <= target)
				{
					answer = sum;
				}
			}
		}
	}

	// 출력
	cout << answer;

	return 0;
}

Result

2798