오늘은 조합 삽질기.조합에 대한 생각을 했다.
디테일이 중요한것같다. 아는것 같아도 직접 코드를 좀 수정하면 또 틀린다.
깨달은 점 :
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 |