白駿Baekjoon 2798ブラックジャック-JAVA
https://www.acmicpc.net/problem/2798
質問する
カジノで最も人気のあるゲームブラックジャックのルールはかなり簡単です.カードと21を超えない限度内で、カード和を最大限に拡大するゲームです.ブラックジャックはカジノごとに異なる規定を持っている.
韓国最高のブラックジャックの達人である金正仁(キム・ジョンイン)氏は、サングン、チャンヨン氏と新しいブラックジャックルールを制定し、ゲームを行う.
金正仁バージョンの黒いジャックには、カードごとに正の整数が書かれています.その後、ディーラーはすべてのN枚のカードを床に置いて、数字を表示します.そしてディーラーはデジタルMを叫んだ.
現在、プレイヤーは限られた時間内にN枚のカードの中から3枚のカードを選ばなければならない.ブラックジャック変形ゲームなので、プレイヤーが選択したカードの和はMを超えず、できるだけMに近づくようにします.
N枚のカードの数字が与えられている場合は、Mを超えずにMに最も近いカード3枚の合計を求めて出力してください.
入力
第1行は、カードの個数N(3≦N≦100)およびM(10≦M≦300000)を与える.2行目は、100000を超えない正の整数であるカードの数字を与えます.
3枚とMを超えないカードが見つかった場合のみ、入力として使用できます.
しゅつりょく
1行目は、Mに最も近い3枚のカードの合計を超えないように出力されます.
入力例1説明 演算量 n-2、n-1、n 現在の計算値がMより大きい場合は異常処理 を継続する.値がMの場合の異常処理
質問する
カジノで最も人気のあるゲームブラックジャックのルールはかなり簡単です.カードと21を超えない限度内で、カード和を最大限に拡大するゲームです.ブラックジャックはカジノごとに異なる規定を持っている.
韓国最高のブラックジャックの達人である金正仁(キム・ジョンイン)氏は、サングン、チャンヨン氏と新しいブラックジャックルールを制定し、ゲームを行う.
金正仁バージョンの黒いジャックには、カードごとに正の整数が書かれています.その後、ディーラーはすべてのN枚のカードを床に置いて、数字を表示します.そしてディーラーはデジタルMを叫んだ.
現在、プレイヤーは限られた時間内にN枚のカードの中から3枚のカードを選ばなければならない.ブラックジャック変形ゲームなので、プレイヤーが選択したカードの和はMを超えず、できるだけMに近づくようにします.
N枚のカードの数字が与えられている場合は、Mを超えずにMに最も近いカード3枚の合計を求めて出力してください.
入力
第1行は、カードの個数N(3≦N≦100)およびM(10≦M≦300000)を与える.2行目は、100000を超えない正の整数であるカードの数字を与えます.
3枚とMを超えないカードが見つかった場合のみ、入力として使用できます.
しゅつりょく
1行目は、Mに最も近い3枚のカードの合計を超えないように出力されます.
入力例1
5 21
5 6 7 8 9
サンプル出力121
入力例210 500
93 181 245 214 315 36 185 138 216 295
サンプル出力2497
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] strArr1 = br.readLine().split(" ");
String[] strArr2 = br.readLine().split(" ");
int N = Integer.parseInt(strArr1[0]);
int M = Integer.parseInt(strArr1[1]);
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(strArr2[i]);
}
System.out.println(search(arr, N, M));
}
// 탐색
static int search(int[] arr, int N, int M) {
int result = 0;
for (int i = 0; i < N - 2; i++) {
if (arr[i] > M) // 예외처리
continue;
for (int j = i + 1; j < N - 1; j++) {
if (arr[i] + arr[j] > M) // 예외처리
continue;
for (int k = j + 1; k < N; k++) {
int temp = arr[i] + arr[j] + arr[k];
if (M == temp) // 동일값 생성 시 리턴
return temp;
if (result < temp && temp < M) // 세 카드의 합이 이전 합보다 크면서 M 보다 작을 경우 result 갱신
result = temp;
}
}
}
return result;
}
}
Reference
この問題について(白駿Baekjoon 2798ブラックジャック-JAVA), 我々は、より多くの情報をここで見つけました https://velog.io/@chamominedev/백준-Baekjoon-2798번-블랙잭-JAVAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol