문제 조건

 

 

문제

 

 

입력

 

 

출력

 

 

문제 분석

- 조합을 활용

 

 

문제 풀이

1) 조합으로 카드 3장을 뽑는다

2) 조건에 충족되는 경우 최대값 비교를 하여 답을 구한다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
	private static int N, M, ans;
	private static int[] arr;
	private static int[] res = new int[3];

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		st = new StringTokenizer(br.readLine());
		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());
		arr = new int[N];
		ans = Integer.MIN_VALUE;

		st = new StringTokenizer(br.readLine());
		for (int i = 0; i < N; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}

		combination(0, 0);
		System.out.println(ans);

	}// main

	private static void combination(int cnt, int start) {
		if (cnt == 3) {
			hap();
			return;
		}

		for (int i = start; i < N; i++) {
			res[cnt] = arr[i];
			combination(cnt + 1, i + 1);
		}
	}// combination

	private static void hap() {
		int temp = res[0] + res[1] + res[2];
		if (temp <= M) {
			ans = Math.max(ans, temp);
		}
	}// hap

}// class-end

'Algorithm > BOJ' 카테고리의 다른 글

BOJ 3052 나머지  (0) 2021.03.04
BOJ 3985 롤케이크  (0) 2021.03.04
BOJ 2941 크로아티아알파벳  (0) 2021.03.03
BOJ 2999 비밀이메일  (0) 2021.03.01
BOJ 17413 단어뒤집기2  (0) 2021.02.26