알고리즘 문제 풀이

SWEA 9229 한빈이의 spot mart (Java 자바)

superbono 2021. 2. 8. 23:22

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW8Wj7cqbY0DFAXN&categoryId=AW8Wj7cqbY0DFAXN&categoryType=CODE&problemTitle=%ED%95%9C%EB%B9%88%EC%9D%B4&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

역시 조합으로 풀면 된다. 아주 쉬운 문젠데... " "를 "  "로 스페이스 두번 치는 바람에 두번 틀렸다. 꼼꼼하게 문제를 풀자...!

 

import java.util.Scanner;

// 한빈이의 spot mart
public class swea9229 {
	static int snack[];
	static int N, M, Max;
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		for (int tc = 1; tc <= T; tc++) {
			N = sc.nextInt();
			M = sc.nextInt();
			
			snack = new int[N];
			
			for (int i = 0; i < N; i++) {
				snack[i] = sc.nextInt();
			}
			Max = -1;
			
			pick(0, 0, 0);
			if(Max == -1) 
				Max = -1; 
			System.out.println("#" + tc + " "+ Max);
		}
	}
	
	static void pick(int cnt, int idx, int sum) {
		if(sum > M) return;
		if(cnt == 2) {
			if(Max < sum) Max = sum;
			return;
		}
		if(idx == N) return;
		
		pick(cnt + 1, idx + 1, sum + snack[idx]);
		pick(cnt, idx + 1, sum);
	}
}