728x90
![[SWEA] 5215 햄버거 다이어트 - JAVA [SWEA] 5215 햄버거 다이어트 - JAVA](https://blog.kakaocdn.net/dn/yf6aO/btryhO1OEIN/lVHlphdVT4ksamJqEAQJ91/img.jpg)
1. 문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!...
swexpertacademy.com
2. 풀이
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class D3_5215_햄버거다이어트 { static int N, L; static int[][] ingredients; public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(in.readLine()); StringBuilder sb = new StringBuilder(); for (int tc = 1; tc <= T; tc++) { sb.append("#").append(tc).append(" "); //입력 StringTokenizer st = new StringTokenizer(in.readLine()); N = Integer.parseInt(st.nextToken()); L = Integer.parseInt(st.nextToken()); ingredients = new int[N][2]; //0 : 맛 점수, 1 : 칼로리 for (int n = 0; n < N; n++) { st = new StringTokenizer(in.readLine()); ingredients[n][0] = Integer.parseInt(st.nextToken()); ingredients[n][1] = Integer.parseInt(st.nextToken()); } //탐색+출력 sb.append(calcTaste(0, 0, 0)).append("\n"); } System.out.print(sb); } public static int calcTaste(int cal, int score, int n) { if (cal > L) return 0; if (n == N) return score; return Math.max(calcTaste(cal + ingredients[n][1], score + ingredients[n][0], n + 1), calcTaste(cal, score, n + 1)); } }
1. Base: 현재 칼로리가>한계칼로리이면 0 리턴하고 끝, 현재 인덱스가 재료의 수와 같다면 끝낸다.
2. Recursive: 현재 인덱스의 재료를 더한 것, 더하지 않은 것을 각각 구해서 둘 중 최대값을 리턴한다.
3. 결과
![[SWEA] 5215 햄버거 다이어트 - JAVA - 3. 결과 [SWEA] 5215 햄버거 다이어트 - JAVA - 3. 결과](https://blog.kakaocdn.net/dn/bNUli7/btrsJMUYguN/N8fSzwSxOuDxos6v0xyDr1/img.png)
틀린 코드 ▽ (checked는 방문여부 확인 배열이다)
public static int calcTaste(int score,int taste, int n) { if(n==N) return taste; if(score+ingredients[n][1]>L) return taste; checked[n] = true; taste += ingredients[n][0]; score += ingredients[n][1]; int maxTaste = taste; for(int i=0;i<N;i++) { if(checked[i]) continue; maxTaste = Math.max(maxTaste,calcTaste(score,taste,i)); } checked[n] = false; return maxTaste; }
'코딩테스트 > SWEA' 카테고리의 다른 글
[SWEA] 1224 계산기3 - JAVA (0) | 2022.02.09 |
---|---|
[SWEA] 1223 계산기2 - JAVA (0) | 2022.02.09 |
[SWEA] 1861 정사각형 방 - JAVA (0) | 2022.02.09 |
[SWEA] 3499 퍼펙트셔플 (0) | 2022.02.09 |
[SWEA] 1218 괄호짝찾기 - JAVA (0) | 2022.02.07 |
댓글