[JAVA] SWEA 9229 - 한빈이와 Spot Mart

hyng·2022년 2월 7일
0

SWEA

목록 보기
28/78

조합으로 풀면 되는 문제
순서를 고려하지 않도록 for문 인덱스를 이전 인덱스+1에서부터 시작한다.

import java.util.*;
class Solution
{
    static int snak[];
    static int max = 0;

	public static void main(String args[]) throws Exception
	{
		Scanner sc = new Scanner(System.in);
        StringBuffer sb = new StringBuffer();

        int T = sc.nextInt();
        for(int tc=1; tc<=T; tc++){
            sb.append("#").append(tc).append(" ");
            int N = sc.nextInt();
            int K = sc.nextInt();

            snak = new int[N];

            for(int i=0; i<N; i++){
                snak[i] = sc.nextInt();
            }
            max = 0;
            solve(0,0,0,N,K);
            if(max == 0)
                sb.append("-1").append("\n");
            else
                sb.append(max).append("\n");

        }
        System.out.println(sb);
    }

     private static void solve(int i, int size, int sum, int N, int K) {
       if(size == 2){
           max = Math.max(max, sum);
           return;
       }
        for(int j=i; j<N; j++){
           if(sum + snak[j] > K)
               continue;
           solve(j+1, size+1, sum+snak[j], N, K);
       }
    }


}
profile
공부하고 알게 된 내용을 기록하는 블로그

0개의 댓글