티스토리 뷰

5215. 햄버거 다이어트

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWT-lPB6dHUDFAVT&categoryId=AWT-lPB6dHUDFAVT&categoryType=CODE&problemTitle=%ED%96%84%EB%B2%84%EA%B1%B0&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

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

swexpertacademy.com

import java.io.*;
import java.util.*;

// 210208 

public class Solution_D3_5215_햄버거다이어트 {
	
	static int N, L;
	static int[][] burgerArr;
	static int maxPoint; 
	// static 변수는 main에서 매번 초기화 해야 하는거 까먹지좀말자^^
	
	static void subset(int cnt, int totalCal, int totalPoint) {
		
		if (totalCal > L) {
			return;
		}
		
		if (cnt==N) {
			maxPoint = Math.max(maxPoint, totalPoint);	
			return;
		} 
		subset(cnt+1, totalCal + burgerArr[cnt][1], totalPoint + burgerArr[cnt][0]);
		subset(cnt+1, totalCal, totalPoint);

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

		int T = Integer.parseInt(br.readLine());
		
		for(int tc=1; tc<=T; tc++) {
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");
			N = Integer.parseInt(st.nextToken()); // 재료수
			L = Integer.parseInt(st.nextToken()); // 제한 칼로리
			maxPoint = 0;
		
			burgerArr = new int[N][2];
			
			for(int i=0; i<N; i++) {
				st = new StringTokenizer(br.readLine(), " ");
				burgerArr[i][0]  = Integer.parseInt(st.nextToken()); // 점수
				burgerArr[i][1]  = Integer.parseInt(st.nextToken()); // 칼로리
			}
			
			subset(0, 0, 0);
			System.out.println("#" + tc + " " + maxPoint);
			
		}
		
		br.close();
	}

}

 

1. static 변수는 main에서 매번 초기화 하는거 잊지 좀 말자

2. 완전 탐색 (부분집합/ 조합/ 순열) 코드에 익숙해지자 많이 풀자

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함