happy coding

[java] 2798. 블랙잭 본문

coding study/baekjoon

[java] 2798. 블랙잭

yeoonii 2023. 7. 28. 13:58
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        //카드의 개수 n과 숫자 m을 입력받음
        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());

        int[] num = new int[n];
        //카드에 쓰여 있는 수가 주어짐 n개
        st = new StringTokenizer(br.readLine(), " ");
        for (int i = 0; i < n; i++) {
            num[i] = Integer.parseInt(st.nextToken());
        }

        //m을 넘지 않으면서, m에 최대한 가까운 카드 3장의 합을 출력
        int output = search(num, n, m);
        System.out.println(output);
    }

    static int search(int[] num, int n, int m) {
        int output = 0;

        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 = num[i] + num[j] + num[k];
                    if (m == sum) {
                        return sum;
                    }
                    if (output < sum && sum < m) {
                        output = sum;
                    }
                }
            }
        }
        return output;
    }
}

메서드 하나 선언하는게 마음이 편한 경우였다.. 반복문에서 좀 헤맸으니까 다시 생각해보는 걸로.

'coding study > baekjoon' 카테고리의 다른 글

[java] 2581. 소수  (0) 2023.07.28
[java] 2750. 수 정렬하기  (0) 2023.07.28
[java] 2908. 상수  (0) 2023.07.28
[java] 2920.음계  (0) 2023.07.28
[java] 5585. 거스름돈  (0) 2023.07.28
Comments