❓문제
https://www.acmicpc.net/problem/2798
🔅해석
이 문제는 브루트포스 알고리즘에 속하므로 완전 탐색을 하는 문제이다.
그도 그럴것이 주어진 카드의 경우의 수를 다 더해가면서 최대 값을 넘지 않으면서 가장 가까운 값을 찾아야 할 것이다.
그래서 단순하게 for문을 다중으로 돌면서 숫자를 더해줬다.
⭕정답 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
//입력받는 카드 배열
int[] arr = new int[n];
st = new StringTokenizer(br.readLine());
//n개 요소 배열 담기
for (int i=0; i<n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
//3장의 카드 더하고 그 중 최대값 m을 넘지않는 최대값 구하기
int result = 0, sum=0;
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++) {
sum = arr[i] + arr[j] + arr[k];
if (sum<=m) {
result = Math.max(sum, result);
}
}
}
}
System.out.println(result);
}
}
❗결과
'코딩테스트 > 백준' 카테고리의 다른 글
[코테] 백준 5585번 : 거스름돈 (java) (0) | 2023.12.17 |
---|---|
[코테] 백준 20188번 : 등산마니아 (java) (2) | 2023.12.07 |
[코테] 백준 10250번 : ACM 호텔 (java) (0) | 2023.10.29 |
[코테] 백준 2587번 : 대표값2 (java) (0) | 2023.10.28 |
[코테] 백준 25206번 : 너의 평점은 (java) (0) | 2023.10.28 |