hahn

단계별로 풀어보기(브루트 포스 - 블랙잭) 본문

코딩테스트 연습/백준(JAVA)

단계별로 풀어보기(브루트 포스 - 블랙잭)

hahn 2021. 8. 31. 18:36
728x90
반응형

2798번: 블랙잭 (acmicpc.net)

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

 

http://boj.kr/5ddb7ec49bf24de1b886490e97e8c8b9

 

공유 소스 보기

 

www.acmicpc.net

더보기
import java.util.Scanner;

class Main{
    
    public static void main(String[] args){
        
        Scanner sc = new Scanner(System.in);
		
		int cardCount, purposeSum, result, sum;
		
		cardCount = sc.nextInt();
		result = cardCount;
		purposeSum = sc.nextInt();
		
		int[] arr = new int[cardCount];
		
		for(int i = 0; i < arr.length; i++) {
			
			arr[i] = sc.nextInt();
			
		}
		
		for(int i = 0; i < arr.length; i++) {
			
			for(int j = i + 1; j < arr.length; j++) {
				
				for(int k = j + 1; k < arr.length; k++) {
					sum = arr[i] + arr[j] + arr[k];
					if(purposeSum - sum < purposeSum - result && sum <= purposeSum) result = sum;
					if(result == 0) break;
				}
				
			}
			
		}
		
		System.out.println(result);
        
    }
    
}

그냥 전부 다 더해서 입력값과 가장 차이가 적은 것을 출력하게 했다.

 

물론 입력값과 동일하면 break 하고 바로 출력.

728x90
반응형