반응형
Notice
Recent Posts
Recent Comments
«   2024/09   »
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 26 27 28
29 30
Archives
관리 메뉴

Easy-So-Easy

[백준] 2798번 블랙잭 - C/C++ 본문

BaekJoon

[백준] 2798번 블랙잭 - C/C++

섭_민 2023. 6. 22. 04:33
반응형

백준 2798 문제(Problem)

2798
백준 2798 문제

풀이(Solution)

이 문제는 브루트포스로 쉽게 풀 수 있는 문제이다. 문제에서 집고 가야 할 핵심 포인트는 'N장의 카드 중에서 3장의 카드를 뽑는다는 점'과 '고른 카드의 합은 M을 넘지 않으면서 최대한 가깝게'라는 점이다. 

 

몇 장을 뽑아야 하는지는 이미 문제에서 나왔으니, 그리고 3장 밖에 뽑지 않으니 필자는 단순하게 3중 for문을 사용하였다. (3장 이상을 뽑아야 하거나 몇 장 뽑아야 하는지 나오지 않으면 재귀함수를 이용하는 것을 추천한다.)

 

각 케이스 마다 최대값과 비교하여 M을 넘지 않으면서 M에 최대한 가까운 값을 max 변수를 갱신함으로써 문제를 해결하였다.

 

번외: max 변수는 long long 타입으로 작성하지 않아도 된다. 하지만 필자는 최대값을 구하는 문제의 경우 습관적으로 적는다.

 

전체 코드(Code)

#include<iostream>
using namespace std;

int main(){
  ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  int n, m, k; cin >> n >> m;
  int arr[100] = {0,};
  
  for(int i=0; i<n; i++)
    cin >> arr[i];

  long long max = 0;
  for(int i=0; i<n-2; i++){
    for(int j=i+1; j<n-1; j++){
      for(int w=j+1; w<n; w++){
        k = arr[i]+arr[j]+arr[w];
        if(k>max && m>=k)
          max = k;
      }
    }
  }

  cout << max;
}
반응형

'BaekJoon' 카테고리의 다른 글

[백준] 10872번 팩토리얼 - C/C++  (0) 2023.06.22
[백준] 2231번 분해합 - C/C++  (0) 2023.06.22
[백준] 2580번 스도쿠 - C/C++  (0) 2023.06.21
[백준] 9663번 N-Queen - C/C++  (0) 2023.06.20
[백준] 15652번 N과 M (4) - C/C++  (0) 2023.06.20