본문 바로가기
Java/백준

백준 2798번 - 블랙잭 (Java)

by 녹녹1 2024. 1. 19.


 

풀이과정

  • 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;
    }
}

'Java > 백준' 카테고리의 다른 글

백준 1764 - 듣보잡  (0) 2024.01.25
백준 2851번 - 슈퍼 마리오 (JAVA)  (0) 2024.01.23
백준 2309번 - 일곱 난쟁이 (Java)  (0) 2024.01.20

댓글