코테공부

난쟁이마을 c++

하얀잔디 2022. 9. 20. 17:08

오늘은 조합 삽질기.조합에 대한 생각을 했다.

디테일이 중요한것같다. 아는것 같아도 직접 코드를 좀 수정하면 또 틀린다.

 

깨달은 점  :

idx는 굳이 종료조건에 안담겨도 됨.

for문에는 굳이 2개로 나누어서 들어갈때, 안들어갈때 안나눠도 됨. 적어도 조합에선

 

#include <string>
#include <vector>
#include <iostream>
#include <map>
#include <sstream>
#include <algorithm>
    using namespace std;

    map<string, int> m;

    int arr[9];
    vector<int> answer;
    void johab(int idx, int depth, int sum)
    {
        if (depth == 7 && sum == 100)
        {
            sort(answer.begin(), answer.end());
            for (int i = 0; i < answer.size(); i++)
                cout << answer[i] << "\n";
            exit(0);
        }
        if (idx == 9)
            return;
        for (int i = idx; i < 9; i++)
        {
            answer.push_back(arr[i]);
            johab(i + 1, depth + 1, sum + arr[i]); //들어올때
            answer.pop_back();
            // johab(i + 1, depth, sum);
        }
    }

    int main()
    {
        for (int i = 0; i < 9; i++)
            cin >> arr[i];
        cout << "\n";
        johab(0, 0, 0);
        return 0;
    }

 

 

같이 보면 좋을 문제 : 유레카이론.

'코테공부' 카테고리의 다른 글

카카오기출 코딩테스트 공부 c++  (0) 2022.11.15
다익스트라 알고리즘  (0) 2022.11.04
stringstream  (1) 2022.09.19
erase, substr..  (0) 2022.09.02
프로그래머스 입국심사 c++  (0) 2022.09.01