반응형
https://www.acmicpc.net/problem/2798
카드를 3장을 뽑아서 주어진 숫자를 넘지 않고 최대한 가깝게 만들어주면 되는 문제이다.
문제 풀이
1. 카드 입력을 받아 배열에 저장
2. 3중 포문을 이용하여 3장의 카드의 합을 구함.
3. (주어진 숫자) - (3장의 합) 의 절대값을 이전 값과 비교 그리고 3장의 합이 주어진 숫자보다 작은지 확인
4. 위 조건일 경우 ans에 저장하고 다음 3장의 합으로 넘어감
전체 코드
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
|
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n, m, cards[101];
cin >> n >> m;
int sum = 0;
int ans = 0;
for (int i = 0; i < n;i++){
cin >> cards[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++){
sum += cards[i] + cards[j] + cards[k]; // 3장의 합
if(abs(m-ans)>abs(m-sum) && m-sum >= 0){
// 더 가까운 값을 저장, 주어진 숫자를 넘으면 안됨
ans = sum;
}
sum = 0;
}
}
}
cout << ans;
return 0;
} // 9 min
|
cs |
체감 난이도 | 걸린 시간 | 참고 | 사용 알고리즘 |
하 | 9min | x | 브루트 포스 (brute force) |
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 1065 한수 c++ [컴공과고씨] (0) | 2022.03.29 |
---|---|
백준 4673 셀프 넘버 c++ [컴공과고씨] (0) | 2022.03.29 |
백준 2309 일곱 난쟁이 c++ [컴공과고씨] (0) | 2022.03.28 |
백준 1620 나는야 포켓몬 마스터 이다솜 c++ [컴공과고씨] (0) | 2022.03.28 |
백준 1463 1로 만들기 c++ [컴공과고씨] (2) | 2022.03.27 |