인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

제이크님의 프로필 이미지

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-A

1-A 관련 질문 있습니다.

해결된 질문

작성

·

67

0

제가 혼자 풀어봤는데요. 출력은 맞게 나오는 것 같은데 채점하면 자꾸 틀렸다고 나오네요. 그런데 아무리 봐도 뭐가 틀렸는지 모르겠습니다!! 도와주십쇼!!

#include <bits/stdc++.h>
using namespace std;
int n=9, k=7;
void print(vector<int> b, int a[]){
	for(int i : b) cout << a[i] << endl;
	cout << endl; 
}
void combi(int start, vector<int> b, int a[]){
	int sum=0;
	if(b.size() == k){
		for(int i : b) sum += a[i];
		if(sum == 100){
			print(b, a);
		}
		return;
	}
	for(int i = start+1; i<n; i++){
		b.push_back(i);
		combi(i, b, a);
		b.pop_back();
	}
	return;
}
int main(){
	vector<int> b;
	int a[10];
	
	for(int i=0; i<9; i++){
		cin >> a[i];
	}
	sort(a, a+9);
	combi(-1, b, a);
	return 0;
}

답변 2

0

제이크님의 프로필 이미지
제이크
질문자

감사합니다!!

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 제이크님 ㅎㅎ

	if(b.size() == k){
		for(int i : b) sum += a[i];
		if(sum == 100){
			print(b, a);
		}
		return;
	}

이부분 때문인데요. 이 문제는 정답이 여러개일 수 있습니다. 즉, print를 한다음에 main함수를 종료하는 코드를 넣어야 합니다. print 밑에 exit(0); 을 추가해보시겠어요?

또한 이부분은 교안내 Q. process exit call이란? 를 참고 부탁드립니다.

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.