ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2798 블랙잭
    코딩문제/백준 2020. 7. 9. 02:22

    3중 for문을 이용하여, 모든 경우의 수를 다 점검하여, 최적의 값 즉 3개의 합이 M에 가장 가까운 값을 고르는 방식 이용.  만약 M에 일치하는 값이 나오면 이미 최적의 수이므로, 반복문을 종료 하기로 하였다. 

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main() {
    	int n, m;
    	int sum = 0;
    	cin >> n >> m;
    	vector<int> arr;
    	for (int i = 0; i < n; i++) {
    		int tmp;
    		cin >> tmp;
    		arr.push_back(tmp);
    	}
    	for (int i = 0; i < n; i++) {
    		for (int j = i+1; j < n; j++) {
    			for (int k = j+1; k < n; k++) {
    				int tmp2 = arr[i] + arr[j] + arr[k];
    				if (m - tmp2 < m - sum && tmp2 <= m) {
    					sum = tmp2;
    					if (sum == m) break;
    				}
    				
    			}
    		}
    	}
    	cout << sum << endl;
    	return 0;
    }

    '코딩문제 > 백준' 카테고리의 다른 글

    1978 : 소수찾기  (0) 2020.07.13
    9613 : GCD 합  (0) 2020.07.13
    1934 : 최소공배수  (0) 2020.07.13
    2748 피보나치수  (0) 2020.07.09

    댓글

Designed by Tistory.