2798번: 블랙잭
https://www.acmicpc.net/problem/2798
# 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
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[] card = new int[n];
for (int i = 0; i < n; i++) {
card[i] = Integer.parseInt(st.nextToken());
}
// 세 카드의 합 계산
ArrayList<Integer> sumOfThree = new ArrayList<>();
int a, b, c;
for (int i = 0; i < n-2; i++) {
a = card[i];
for (int j = i+1; j < n-1; j++) {
b = card[j];
for (int k = j+1; k < n; k++) {
c = card[k];
sumOfThree.add(a+b+c);
}
}
}
// sumOfThree 리스트 정렬
Collections.sort(sumOfThree);
int result = -1;
for (int i = 0; i < sumOfThree.size(); i++) {
if (sumOfThree.get(i) <= m) {
result = sumOfThree.get(i);
} else {
break;
}
}
System.out.println(result);
br.close();
}
}
- 브루트 포스(brute force) : 키 전수조사(exhaustive key search) 또는 무차별 대입(無差別代入) 공격이라고도 불리며 조합 가능한 모든 문자열을 하나씩 대입해 보는 방식으로 암호를 해독하는 방법이다. 흔히 암호학에서 연구되나, 알고리즘 분야에서도 사용되고 있다.
- 즉, 단순무식하게 수학 문제를 푸는 방법인 '계산 노가다'이다.
- 우리는 그냥 컴퓨터에게 시키면 된다. ( ̄y▽ ̄)╭ so easy
'코딩테스트 > 자바 문제풀이' 카테고리의 다른 글
[CLASS 2: 수학] 백준 1546 평균 (0) | 2024.10.08 |
---|---|
[CLASS 2: 구현] 백준 1259 팰린드롬수 (0) | 2024.10.07 |
[CLASS 2: 수학] 백준 30802 웰컴 키트 (0) | 2024.10.05 |
[CLASS 2: 수학] 백준 4153 직각삼각형 (2) | 2024.10.04 |
[CLASS 1: 구현] 백준 2675 문자열 반복 (1) | 2024.10.03 |