WEIRD 문제 풀이 도움 부탁드립니다.

  • User Avatar
    dacchur

    아래 코드와 같이 구현했는데요.
    계속 오답이라고 나오네요.
    가지고 있는 샘플로는 답이 맞는데,
    계속적으로 오답이라 어디가 틀렸는지를 모르겠습니다.

    도움 부탁드리겠습니다.


    조합을 사용하여 각 원소들의 합을 더한후 입력값과 비교했고요.
    조건도 맞는거 같은데, 고수님들 도와주세요~
    ~~~ c++
    #include
    #include

    using namespace std;

    int N;
    bool judge;

    bool Addresult(int* result, int size){
    int total = 0;
    for(int i=0;i<size;i++){
    total += result[i];
    }
    if(total == N)
    return true;
    else
    return false;
    }

    void Combination(int n, int r, int original_r, int* temp_result, int* src) {
    if ( r == 0 ){
    if(Addresult(temp_result, original_r))
    judge = true;
    } else if ( n < r ) {
    return;
    } else {
    temp_result[r-1] = src[n-1];
    Combination(n-1, r-1, original_r,temp_result,src);
    Combination(n-1, r, original_r,temp_result,src);
    }
    }

    bool Judge(int size, int* tmp_arr, int* arr){
    judge = false;
    for(int i=3; i<size;i++){
    Combination(size,i,i,tmp_arr,arr);
    if(judge == true){
    return true;
    }
    }
    return false;
    }

    int main()
    {
    int cmd_cnt = 0;

    cin >> cmd_cnt;

    while(cmd_cnt--) {
    list arrInt;
    cin >> N;

    int* pArr = 0;
    int cnt = 0;
    int total = 0;
    
    for(int i = 1; i<N/2+1; i++){
      if(N%i == 0){
        arrInt.push_back(i);
      }
    }
    
    pArr = new int[arrInt.size()];
    list<int>::iterator it = arrInt.begin();
    list<int>::iterator it_end = arrInt.end();
    
    for(it; it != it_end; it++){
      pArr[cnt++] = *it;
      total += *it;
    }
    
    if(total <= N){
      cout << "not_weird" << endl;
      continue;
    }
    
    int* pTmp = new int[cnt];
    
    if(Judge(cnt,pTmp,pArr)){
      cout << "not weird" << endl;
    } else {
      cout << "weird" << endl;
    }
    
    delete[] pTmp;
    delete[] pArr;    
    

    }
    return 0;
    }
    ~~~


    12년 전
3개의 댓글이 있습니다.
  • User Avatar
    Kureyo

    코드은 자세히 안읽어봤는데..
    cout << "not_weird" << endl;
    _가 빠져야할거같네요


    12년 전 link
  • User Avatar
    Being

    슬쩍 봤는데 왠지 중간에 문자열 하나랑 그 앞 조건 부등호가 의심이 가는데요 ㅎㅎ


    12년 전 link
  • User Avatar
    dacchur

    아~ 감사합니다.
    문자열 문제였네요.^ 눈이 어두워서..ㅠㅠ
    답변들 감사합니다.


    12년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.