https://www.acmicpc.net/problem/2798
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
접근 방법
카드 세 장의 합을 내면 되므로 3 중첩 반복문을 사용했다.
반복문만 해도 O(N^3) 라서 부담스러운 건 사실이다.
조합 문제니까 아마 내가 애용하는 백트래킹도 가능할 듯하다.
소스 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int M = scan.nextInt();
int min = 0;
int[] cards = new int[N];
for(int i=0; i<N; i++)
cards[i] = scan.nextInt();
for(int i=N-1; i>1; i--)
for(int j=i-1; j>=0; j--)
for(int k=j-1; k>=0; k--) {
int sum = cards[i] + cards[j] + cards[k];
if(M >= sum && min < sum)
min = sum;
}
System.out.println(min);
}
}
'코테 > 자바' 카테고리의 다른 글
[BOJ] 18870. 좌표 압축 (0) | 2023.05.18 |
---|---|
[BOJ] 7568. 덩치 (2) | 2023.05.18 |
[BOJ] 10870. 피보나치 수 5 (0) | 2023.05.18 |
[BOJ] 1978. 소수 찾기 (0) | 2023.05.18 |
[BOJ] 16171. 나는 친구가 적다 (Small) (0) | 2023.05.18 |