1-A문제 순열재귀함수 질문입니다.
376
23 câu hỏi đã được viết
안녕하세요 강사님!
일곱난쟁이문제를 순열로 풀 때 순열의 방법으로 do-while permutation와 재귀함수가 있습니다.
이 중, 일곱난쟁이문제를 순열의 재귀함수를 통해서 푸는 방법으로
풀고 싶어서 풀다가 어느 코드의 구현이 잘못 된지를 몰라서 질문 드립니다.
http://boj.kr/ad5d9ed01b4c433cadf0e458aad20a09
Câu trả lời 1
1
안녕하세요 1209님 ㅎㅎ
이 문제는
7개를 합해 100이 될 때 출력! 하고 끝내는 문제죠?
그리고..
가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
>> 를 고려해주셔야 해요. 여러개 일 때 그냥한번 출력하고 끝!! 하는 문제입니다.
자 그러면
void printV(vector<int> &v){
int sum = 0;
for(int i = 0; i < 7; i++){
sum += v[i];
if(sum == 100) break;
}
for(int i = 0; i < v.size() - 2; i++){
cout << v[i] << '\n';
}
cout << '\n';
}이 코드가 수정되어야 할 것같지 않을까요?
일단은 sum == 100 break;를 하면 안되겠죠? 그러면 5개를 더하고 100일 때 경우가 잘못체킹이 되죠?
그리고 이 함수로써 main함수를 끝내야 해요. 이 때는 exit(0)을 써야 합니다. (교안 참고)
그리고 swap된 v를 기반으로 하는게 아니라 새로운 배열을 만들어 sort를 해서 오름차순으로 출력까지 해야겠죠?
void printV(vector<int> &v){
int sum = 0;
vector<int> temp;
for(int i = 0; i < 7; i++){
sum += v[i];
temp.push_back(v[i]);
}
if(sum == 100){
sort(temp.begin(), temp.end());
for(int a : temp) cout << a << " ";
exit(0);
}
}이렇게 고치시면 됩니다.
나머지 코드는 너무나도 잘 짜셨습니다. ㅎㅎ
감사합니다.
1-E질문입니다!
0
508
2
3-L 틀린 부분 피드백 부탁드립니다.
0
811
2
1-A 일곱난쟁이문제입니다
0
451
1
문제 풀 때 방향성에 대해
0
793
1
맥에서 vs code로 실행 관련 질문입니다
0
515
1
17071번 메모리 초과
0
381
1
1-C질문입니다!
0
411
2
2-B BFS 시간초과질문
0
622
2
1-O 13번 라인
0
434
1
6-J 놀이공원 문제 질문
0
375
1
구현관련 질문
0
478
1
강의 교안
0
313
1
실력을 더 올리고나서 강의를 보는 것이 맞을까요?
0
541
1
안녕하세요! 재귀함수에 관해서 질문드립니다
0
531
1
1-K
0
468
2
3-G번 질문있습니다.
1
464
3
3-C 실행 시간 질문드립니다.
0
489
1
4-A 문제 풀이 질문있습니다.
0
586
2
비트마스킹 연산자 "1의 보수" 영문 표기법
0
430
1
격자탐색 문제에서 BFS 시간복잡도 질문드립니다.
0
329
1
3-O go 함수 질문 드립니다.
1
437
2
4-A 출력 질문
0
298
1
1주차 1-O 질문드립니다
0
250
1
2-S (1325번 - 효율적인 해킹) 문제 질문 드립니다.
0
505
1

