본문 바로가기
문제 풀이/백준(BOJ)

[C] 백준 2798번 : 블랙잭

by 희조당 2021. 4. 3.
728x90

www.acmicpc.net/problem/2798

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net


문제 접근

 1. 시행횟수가 최대 100회 밖에 안되기 때문에 각 경우를 모두 따질 수 있다.

 2. 받은 카드의 숫자를 배열에 모두 넣어 경우를 따질 준비를 한다.

 3. 배열 idx 0부터 n-1까지 처음 숫자부터 다다음까지 더한 값을 하나하나 따진다.

 4. m보다 작거나 같고 현재 최댓값보다 큰 값을 출력한다.

느낀점

생각보다 어렵지 않은 문제였다. 분명히 맞았는데 출력이 안되서 다시 시도했다. 최근에 하노이탑에서 난관에 걸려서 몇일 코딩을 못했는데 오늘부터 다시 차근차근해야겠다.

코드

#include <stdio.h>

int main() {
	int n, m;
	int arr[100] = { 0, };
	scanf("%d %d", &n, &m);
	int max = 0;
	for (int i = 0;i < n;i++) {
		scanf("%d", &arr[i]);
	}

	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 tmp = arr[i] + arr[j] + arr[k];
				if (m >= tmp && tmp >= max) {
					max = tmp;
				}
			}
		}
	}
	printf("%d", max);

	return 0;
}

'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글

[C] 백준 7568번 : 덩치  (0) 2021.04.08
[C] 백준 2231번 : 분해합  (0) 2021.04.06
[C] 백준 2447번 : 별 찍기 - 10  (0) 2021.03.27
[C] 백준 10870번 : 피보나치 수 5  (0) 2021.03.24
[C] 백준 10872번 : 팩토리얼  (0) 2021.03.24

댓글