BOJ No.2798 [블랙잭]
본문 바로가기
Algorithm (C++ based)/BOJ

BOJ No.2798 [블랙잭]

by 조훈이 2021. 2. 5.

Baekjoon Online Judge No.2798 [블랙잭]


   Code   

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <vector>
 
using namespace std;
 
int N, M;
vector<int> cards;
 
int main() {
    cin >> N >> M;
    cards.resize(N);
 
    for (int i = 0; i < N; i++)
        cin >> cards[i];
 
    int answer = 0;
 
    for (int i = 0; i < N; i++)
        for (int j = i + 1; j < N; j++)
            for (int k = j + 1; k < N; k++)
                if (cards[i] + cards[j] + cards[k] <= M)
                    answer = max(answer, cards[i] + cards[j] + cards[k]);
 
    cout << answer;
}
cs

   How to solve   

  Brute force 로 풀어도 최대 O(100^3)의 시간복잡도밖에 가지지 않는다. #18 ~ #22 line 에서 3개를 고를 수 있는 모든 경우의 수를 다 따지면서, 뽑은 세 장의 카드의 합이 M 이하일 때(#21 line) #22 line 에서 answer 의 값을 재설정한다.

728x90

'Algorithm (C++ based) > BOJ' 카테고리의 다른 글

백준 No.12865 [평범한 배낭]  (0) 2021.02.06
백준 No.10942 [팰린드롬?]  (0) 2021.02.05
백준 No.11049 [행렬 곱셈 순서]  (0) 2021.02.04
백준 No.1912 [연속합]  (0) 2021.02.02
백준 No.2603 [색종이 만들기]  (0) 2021.01.24

댓글