백준 2798번 블랙잭(C언어)

최정우·2022년 6월 28일
0

백준 문제풀이

목록 보기
6/26

Code

#include <stdio.h>

int main()
{
	int N = 0, M = 0, dif = 0, sum =0, difmin = 0;
	int num[101] = {};
	int i, j, k;
	scanf_s("%d %d", &N, &M);
	difmin = M;
	for (i = 0; i < N; i++)
	{
		scanf_s("%d", &num[i]);
	}

	for (i = 0; i < N - 2; i++)
	{
		for (j = i + 1; j < N - 1; j++)
		{
			for (k = j + 1; k < N; k++)
			{
				sum = num[i] + num[j] + num[k];
				if (sum <= M)
				{
					dif = M - sum;
					if (difmin > dif)
					{
						difmin = dif;
					}
				}
				sum = 0;
			}
		}
	}
	sum = M - difmin;
	printf("%d\n", sum);
	return 0;
}

Ket Points

  1. 배열에서 3가지 수를 읽어오면서 비교하는 방식을 생각(코드 중간에 3중for문)
  2. for문을 돌면서 선택한 3가지 수의 합과 입력한 M값의 차들을 비교해 그 차가 0에 가장 가까운 3가지 수를 선택
profile
WHEN LIFE GIVES YOU LEMONS, MAKE LEMONADE

0개의 댓글