반응형

 

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;
}
}
반응형
반응형