STRJOIN 질문드립니다.

  • koain
    koain

    내용은 오름차순으로 소팅하고 배열의 두개씩 더한 뒤
    더한 값으로 배열을 업데이트하고 다시 소팅하고

    이런식으로 반복합니다.

    예제나 제가 생각해본 예제로는 답이 잘나오는데
    제출하면 오답이 나네요

    #include <stdio.h>
    #include <stdlib.h>
    
    int cmp(const void *a, const void *b){
        return (*(int *)a - *(int *)b);
    }
    
    int main()
    {
        int c;
        int n;
        int output;
        int arr_num;
        int i, j = 0;
    
        fscanf(stdin, "%d", &c);
    
        while (c--){
            int strlen[100] = { 0, };
            output = 0;
    
            fscanf(stdin, "%d", &n);
            arr_num = n;
    
            for (i = 0; i < n; i++){
                fscanf(stdin, "%d", &strlen[i]);
            }
    
            while(arr_num - 1){
                qsort((void *)strlen, arr_num, sizeof(int), cmp);
    
                for (i = 0, j = 0; i < arr_num; i+=2, j++){
                    if (i + 1 == arr_num){
                        strlen[j] = strlen[i];
                    }
                    else{
                        strlen[j] = strlen[i] + strlen[i + 1];
                        output += strlen[j];
                    }
                }
                arr_num = j;
            }
    
            fprintf(stdout, "%d\n", output);
        }
    }
    

    8년 전
1개의 댓글이 있습니다.
  • koain
    koain

    아이쿠... 알고리즘이 틀렸네요....


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