반응형
https://www.acmicpc.net/problem/2798
- 문제
- 문제 풀이
백준 2798번 블랙잭은 브론즈 2 난이도의 브루트 포스 문제이다. 이 문제는 먼저 카드의 개수 N과 넘지 말아야 되는 수 M이 주어진다. 그리고 N개 카드 중에 3장을 써서 M과 최대한 가깝게 만드는 세 수의 합을 구해야 한다.
이 문제는 브루트 포스 문제이다. 즉, 3장의 카드를 쓰면서 가능한 모든 조합을 해야 한다는 것이다. 이 문제는 삼중 for-loop을 이용해서 풀 수 있다.
우선 맨 바깥에 있는 for-loop은 int i = 0부터 N - 2까지, 그리고 중간에 있는 for-loop은 int j = i + 1부터 N - 1까지, 그리고 안에 있는 for-loop은 int k = j + 1부터 N까지 돌린 다음에 모든 수를 더해주면 된다.
자세한 코드는 밑에 있는 코드를 참고하면 되겠다.
- 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
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());
st = new StringTokenizer(br.readLine());
int max = 0;
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
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 = arr[i] + arr[j] + arr[k]; //세 수의 합
if (sum <= m) { //합이 m보다 작으면 갱신할 수 있는지 확인
max = Math.max(max, sum);
}
}
}
}
System.out.print(max);
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 2292번 : 벌집 – JAVA [자바] (0) | 2022.07.10 |
---|---|
[백준] 2751번 : 수 정렬하기 2 – JAVA [자바] (0) | 2022.07.10 |
[백준] 2441번 : 별 찍기 - 4 – JAVA [자바] (0) | 2022.07.10 |
[백준] 10870번 : 피보나치 수 5 – JAVA [자바] (0) | 2022.07.10 |
[백준] 1316번 : 그룹 단어 체커 – JAVA [자바] (0) | 2022.07.09 |
댓글