Java/백준
백준 2798번 - 블랙잭 (Java)
녹녹1
2024. 1. 19. 22:34
풀이과정
- BufferedReader 사용해 입력받은 수를 변수와 배열에 저장
- 반복문을 돌 때 3장의 카드를 골라야하기 때문에 처음 반복문에서는 배열 길이에서 -2까지, 두 번째 반복문에서는 첫 번째 반복문 다음부터 배열 길이의 -1까지, 마지막 반복문에서는 두 번째 반복문 다음부터 마지막까지 순회
- 이전에 계산된 값을 저장할 answer와 현재 계산된 값을 저장할 currentSum 변수 생성
- 만약 3개 카드의 합이 제시된 수와 일치한다면 return시키기
- 현재 계산된 값이 제시된 수보다 작으면서 이전에 계산된 값보다 클 경우 answer의 값 갱신하기
코드
package org.example;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] strArray1 = br.readLine().split(" ");
int sum = Integer.parseInt(strArray1[1]);
String[] strArray = br.readLine().split(" ");
int[] array = new int[strArray.length];
for (int i = 0; i < strArray.length; i++) {
array[i] = Integer.parseInt(strArray[i]);
}
int answer = 0; // 지금까지 찾은 최대 합
System.out.println(search(array, answer, sum));
br.close();
}
static int search(int[] arr, int answer, int sum) {
for (int i = 0; i < arr.length - 2; i++) {
for (int j = i + 1; j < arr.length - 1; j++) {
for (int k = j + 1; k < arr.length; k++) {
// 3개 카드의 합 변수
int currentSum = arr[i] + arr[j] + arr[k];
if (currentSum == sum) {
return currentSum;
}
if (currentSum < sum && currentSum > answer) {
answer = currentSum;
}
}
}
}
return answer;
}
}