카드의 합 구하기
Coding/PS

카드의 합 구하기

https://www.acmicpc.net/problem/2798

#include  
#include  
#include  

using namespace std; 

int main () 
{ 
vector deck; // 카드 덱을 저장할 벡터 

int N, M, temp; // N = 카드의 개수, M = 카드의 합 
int i, j, k; // 반복 인수 
int sum=0, top=-1; // sum = 일시적인 카드의 합, top = 여태까지 최고의 합 

// 입력을 받는다. 
cin >> N >> M; 
deck.reserve(N); 
for (i=0; i < N; i++) 
{ 
cin >> temp; 
deck.push_back(temp); 
} 

// bruteforce search 
for (i=0; i<=deck.size()-3; i++) 
for (j=i+1; j<=deck.size()-2; j++) 
for (k=j+1; k<=deck.size()-1; k++) 
{ 
sum = deck[i] + deck[j] + deck[k]; 
if (sum <= M && top<sum) top = sum; 

// 만약 M값이 나오면 서칭을 그만둔다. 
if (top == M) {cout << M << endl; return 0;} 
} 

cout << top << endl; 
}

'Coding > PS' 카테고리의 다른 글

덩치  (0) 2019.07.06
분해합  (0) 2019.07.05
계단 오르기  (0) 2019.06.18
그대로 출력하기  (0) 2019.06.09
열 개씩 끊어 출력하기  (0) 2019.06.08