SW Expert Academy - 9229번(한빈이와 Spot Mart)

최지홍·2022년 2월 8일
0

SW Expert Academy

목록 보기
11/36

문제 출처: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW8Wj7cqbY0DFAXN&categoryId=AW8Wj7cqbY0DFAXN&categoryType=CODE&problemTitle=9229&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1


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

public class Solution {

    private static int maxWeight;
    private static int result;

    public static void main(String[] args) throws IOException {
        StringBuilder sb = new StringBuilder();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(reader.readLine());
        int problemNum = 1;

        while (T-- > 0) {
            StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
            int N = Integer.parseInt(tokenizer.nextToken()); // 과자 개수
            maxWeight = Integer.parseInt(tokenizer.nextToken()); // 무게 제한
            result = -1; // 기본값으로 초기화
            tokenizer = new StringTokenizer(reader.readLine());
            int[] snacks = new int[N];
            for (int i = 0; i < N; i++) {
                snacks[i] = Integer.parseInt(tokenizer.nextToken());
            }
            combination(snacks, 0, 0, 0);
            sb.append("#").append(problemNum++).append(" ");
            sb.append(result).append("\n");
        }
        System.out.println(sb);
    }

    private static void combination(int[] snacks, int weight, int count, int start) {
        if (count == 2) {
            if (weight <= maxWeight) result = Math.max(result, weight);
            return;
        }

        for (int i = start; i < snacks.length; i++) {
            weight += snacks[i];
            combination(snacks, weight, count + 1, i + 1);
            weight -= snacks[i];
        }
    }

}

  • 조합을 통해 간단히 해결할 수 있는 문제였다.
  • 무게가 "초과"인지 "이상"인지 판단하는 것과 무조건 "2개"로 고정된다는 사실을 잘 파악해야 했다.
profile
백엔드 개발자가 되자!

0개의 댓글