9095-123더하기

n<=10 일 떄, 1,2,3에 대해 경우의 수 구하기.

전체 경우의수: 3^10, 왜냐면 3개 중에 1개 선택 x 3개 중에 1개 선택(n번)

  • sumIt(count, sum, goal)

  • 불가능한 경우

    • 함수 호출 여러번 해도 정답 절대 못찾는 경우

    • 문제의 조건을 지키지 않는 경우

  • 정답을 찾은 경우

  • 다음 경우 호출

1번

  • sum>goal

    2번

  • sum==goal

    3번

  • 1 사용하여 재귀호출

  • 2 사용하여 재귀호출

  • 3 사용하여 재귀호출

int answer;
int cnt;

void sumIt(int sum) {

    if(sum > answer) {
        return;
    }
    else if (sum == answer) {
        cnt += 1;
        return;
    }

    for(int i = 1; i<=3; i++) {
        sumIt(sum + i);
    }
}

int main(int argc, const char * argv[]) {
    int n;
    cin>>n;

    for(int i= 0 ;i <n; i++) {
        cin>>answer;
        cnt = 0;
        sumIt(0); 
        cout<<cnt<<endl;
    }
    return 0;
}

Last updated

Was this helpful?