STRJOIN 질문드립니다. 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 아이쿠... 알고리즘이 틀렸네요.... 8년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
koain
내용은 오름차순으로 소팅하고 배열의 두개씩 더한 뒤
더한 값으로 배열을 업데이트하고 다시 소팅하고
이런식으로 반복합니다.
예제나 제가 생각해본 예제로는 답이 잘나오는데
제출하면 오답이 나네요
8년 전