[백준] 2798 블랙잭 - Java

Yunki Kim·2022년 12월 30일
0

백준

목록 보기
77/104
post-thumbnail

문제


링크


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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());

        int[] cardList = new int[N];
        st = new StringTokenizer(br.readLine(), " ");
        for (int i = 0; i < cardList.length; i++) {
            cardList[i] = Integer.parseInt(st.nextToken());
        }
        System.out.println(searchCard(cardList, N, M));
    }

    public static int searchCard(int[] array, int N, int M) {
        int result = 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 temp = array[i] + array[j] + array[k];
                    if (M == temp) return temp;
                    if (result < temp && temp < M) result = temp;
                }
            }
        }
        return result;
    }
}

리뷰

브루트포스 알고리즘의 첫 문제를 풀어보았다.

브루트포스 개념은 학부생때 보안 수업에서 취약점 도구 수업 때 사용해봐서 이해하고있었는데 자바에서는 막상 어떻게 구현하나 싶었는데 이름답게 무작정 돌리는 듯 싶다.

물론 이 안에서도 몇가지 경우의 수를 생각해서 시간 복잡도가 매우 달라지겠으나
이번 문제 자체는 경우가 발생할 곳이 적어서 많은 로직이 들어가면 오히려 더 시간이 걸릴듯하다.

0개의 댓글