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

요가인님의 프로필 이미지
요가인

작성한 질문수

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

1-A

1-A 질문있습니다.

해결된 질문

작성

·

58

0

제 방식대로 풀었을 떄 왜 틀렸는지 잘 모르겠어서 질문 남겨요

#include <bits/stdc++.h>
using namespace std;

int arr[9];
vector<int> v;

// 9명중 7명 선택
// 키의 합 100
// 키가 주어 졌을 때 일곱 난장이 찾기
// 키를 오름차순으로 출력하기

bool Check()
{
    int sum = 0;
    for (int a : v)
        sum += a;

    if (sum == 100)
        return true;
    return false;
}

void Print()
{
    vector<int> ret = v;
    sort(ret.begin(), ret.end());

    for (int a : ret)
        cout << a << '\n';
}

void Combi(int start)
{
    if (v.size() == 7)
    {
        if (Check()) Print();
        return;
    }

    for (int i = start + 1; i < 9; i++)
    {
        v.push_back(arr[i]);
        Combi(i);
        v.pop_back();
    }
}
int main()
{
    // input
    for (int i = 0; i < 9; i++)
        cin >> arr[i];

    // 9명중 7명 선택
    Combi(-1);

    return 0;
}

 

답변 2

1

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

안녕하세요 가인님 ㅎㅎ

오랜만이네요

void Combi(int start)
{
    if (v.size() == 7)
    {
        if (Check()) Print();
        return;

이부분 때문에 그렇습니다.

만약 check -> 해서 같다면 print()하고 exit()을 걸어서 main함수를 종료시켜야 합니다. 이 문제는 여러 경우의 수가 존재하고 해당 경우의 수를 발견하면 출력하고 종료시켜야 하기 때문에 발견 -> main함수 자체 종료 이렇게 로직을 구축해야 합니다.

이부분은 교안내의 다음 부분도 참고부탁드립니다.

Q. process exit call이란?


감사합니다.

-1

안녕하세요, 인프런 AI 인턴입니다.

요가인 님, 제출하신 코드와 유사한 질문들이 이전에도 몇 차례 올라왔습니다. 특히, 일곱 난쟁이 문제를 해결하려고 할 때 흔히 발생할 수 있는 문제점과 주의 사항들이 있습니다. 문제 해결에 있어서 코드 수정이 필요한 부분을 발견하거나 놓친 부분이 있다면, 이를 정확히 파악하는 것이 중요합니다.

이전에 다른 학습자가 유사한 상황에서 제기한 질문에 대해 공유자가 제공한 답변 중 하나가 도움이 될 수 있을 것 같습니다:

  • 1-A 조합으로 풀었을 때 어디가 틀렸는지 잘 모르겠습니다.에서는 조합을 사용하여 일곱 난쟁이 문제를 해결하는 과정에서 발생할 수 있는 일반적인 실수와 그를 해결하기 위한 구체적 방법들에 대해 다루고 있습니다. 특히, 이 답변은 반복문과 조건문을 사용할 때 주의해야 할 점들을 잘 설명하고 있어, 문제를 해결하는 데 도움이 될 수 있습니다.

문제의 핵심은 모든 조합을 올바르게 탐색하고, 정확한 조건을 만족하는 경우에만 결과를 출력해야 한다는 것입니다. 제출하신 코드에서 루프를 돌면서 조합을 구성하는 방식, 조건 확인, 그리고 출력 부분까지 모두 적절히 동작하는지 확인하는 것이 중요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

요가인님의 프로필 이미지
요가인

작성한 질문수

질문하기