반응형

 

1) 반복문

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
		
        int N = scan.nextInt();
        int M = scan.nextInt();
        int[] cards = new int[N];
		
        for(int i = 0; i < N; i++) {
            cards[i] = scan.nextInt();
        }
		
        int max = 0;
        outline : for(int i = 0; i < N-2; i++) {
            for(int j = i+1; j < N-1; j++) {
                for(int k = j+1; k < N; k++) {
                    int sum = cards[i] + cards[j] + cards[k];
                    if(sum <= M) {
                        max = Math.max(max, sum);
                    }
                    if(max == M) {
                        break outline;
                    }
                }
            }
        }
		
        System.out.println(max);
    }
}

2) 재귀호출

import java.util.Scanner;

public class Main {
    private static int[] cards;
    private static int N;
    private static int M;
	
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
		
        N = scan.nextInt();
        M = scan.nextInt();
        cards = new int[N];
		
        for(int i = 0; i < N; i++) {
            cards[i] = scan.nextInt();
        }
		
        System.out.println(solution(0, 0, 0));
    }

    private static int solution(int sum, int idx, int cnt) {
        if(cnt == 3) {
            return sum > M ? 0 : sum;
        }
        if(idx >= N) {
            return 0;
        }
        int max = 0;
        for(int i = idx; i < N; i++) {
            max = Math.max(max, solution(sum+cards[i], i+1, cnt+1));
        }
        return max;
    }
}
반응형
반응형