728x90
시간 제한 : 1초
메모리 제한 : 128MB
입력
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 써있는 수가 주어지며, 이 값은 100,000을 넘지 않는다.
출력
첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력한다.
소스코드
#include <iostream> using namespace std; int main(void) { int n, m, arr[100], ans = 0; cin >> n >> m; for (int i = 0; i < n; i++) cin >> arr[i]; for (int i = 0; i < n - 2; i++) for (int j = i + 1; j < n - 1; j++) for (int k = j + 1; k < n; k++) if (arr[i] + arr[j] + arr[k] <= m && m - (arr[i] + arr[j] + arr[k]) < m - ans) ans = arr[i] + arr[j] + arr[k]; cout << ans; }
Tip
단순 구현 문제로, 반복문만 잘 쓸 수 있으면 쉽게 풀 수 있다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 11048 - 이동하기 (0) | 2018.01.25 |
---|---|
백준] 1788 - 피보나치 수의 확장 (0) | 2018.01.24 |
백준] 2851 - 슈퍼 마리오(COCI 2010/2011) (0) | 2018.01.22 |
백준] 5086 - 배수와 약수(ACM-ICPC Regional) (0) | 2018.01.20 |
백준] 1547 - 공 (0) | 2018.01.20 |