본문 바로가기
자료구조와 알고리즘/알고리즘

2309

by oncerun 2023. 6. 26.
반응형

 

백준의 2309 문제를 읽었을 때  조합이 생각났다. 

 

9명 중 7명을 뽑아 키의 합이 100인 경우 통과이며, 가능한 정답이 여러 개인 경우가 있다고 했기 때문에 정답 시 프로그램을 종료 시켜야한다.

 

이를 기반으로 코드를 작성해보자. 

 

#include <bits/stdc++.h>

using namespace std;

int k = 7;
int n = 9;
int a[9];

void combi(int start, vector<int> b){
    if(b.size() == k){
        int sum = 0;
        for(int height : b) sum += height;

        if(sum == 100){
            sort(b.begin(), b.end());
            for(int height : b) cout << height << '\n';
            exit(0);
        }

        return;
    }


    for(int i = start + 1; i < n; i ++){
        b.push_back(a[i]);
        combi(i, b);
        b.pop_back();
    }

}



int main() {

    for(int i =0; i < n; i++) cin >> a[i];

    vector<int> b;
    combi(-1, b);


    return 0;
}

 

 

재귀함수를 통해 풀었는데, 3번정도 틀렸다. 

 

 

반응형

'자료구조와 알고리즘 > 알고리즘' 카테고리의 다른 글

트럭 주차  (0) 2023.07.01
문자열 카운팅.  (0) 2023.07.01
prefix sum  (0) 2023.06.25
c++ split  (0) 2023.06.23
순열  (0) 2023.06.23

댓글