BOJ 2798[백준 2798]
조건
- N(3 <= N <= 100)개의 카드가 주어진다.
- 딜러가 숫자 M(10 <= M <= 300,000)을 외친다.
- 합이 M을 넘지 않는 카드 3장을 찾을 수 있는 경우만 주어진다.
결과
- M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합.
해결 방법
- 브루트포스 알고리즘으로, 모든 경우를 다 해본다.
- 카드를 정렬한다.
- 카드를 처음부터 3개를 선택하여 합을 구한다. 이 후 한장씩 바꿔가면서 합을 구한다.
- 카드의 합이 M보다 같거나 작고, 이전에 선택했는 카드의 합보다 크거나 같다면 결과 값을 대체한다.
핵심 코드
1 | int result = 0; |
전체 소스 코드는 여기서 확인하실 수 있습니다.