백준 문제풀이

2798. 블랙잭 (자바, Java)

뮤츠 2022. 10. 2. 19:09

브루트 포스란 난폭한 힘, 키 전수조사를 의미한다. 시간복잡도고 뭐고 빠져나갈 수 없는 전수조사를 통해 문제를 해결해나가는 방식. 이중구문 등을 활용하여 문제를 해결해보자.

 

개인적으로 단계가 좀 잘못됐다고 생각한다. 시간복잡도와 효율을 고려해야하는 정렬 등의 문제가 더 뒤에나와야 할 것 같은데...

 

어쨌거나 브루트 포스 방식을 익힐때는 '효율보다는 클리어 그 자체' 에 두는 경우라 봐야할 것이다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
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());
		ArrayList<Integer> arr = new ArrayList();
		
		StringTokenizer st2 = new StringTokenizer(br.readLine());
		int[] card = new int[n];
		int max;
		
		for (int i=0; i<n; i++) {
			
			card[i] = Integer.parseInt(st2.nextToken());
			
		}
		
		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 l = card[i] + card[j] + card[k];
										
					if (l<=m) {
						
						arr.add(l);
						
					}					
				}				
			}			
		}
		
		max = arr.get(0);
		
		for (int i=0; i<arr.size(); i++) {
			
			if (max < arr.get(i)) {
				
				max = arr.get(i);
				
			}
			
		}
		
		System.out.println(max);

	}

}