허접한 풀이 ...
근데 예제에서 5 12 1 3 8 6 출력 결과 31나오던데 .. 29가 맞나요??
1,3 이 기숙사로 3
1이 정문 1
6, 8이 기숙사로 8
3이 정문 3
12,1이 기숙사로 12
1이 정문 1
1,3이 기숙사로 3
3+たす1+たす8+たす3+たす12+たす3 +たす1 =わ 31답변 감사합니다.
덕분에 코드 수정할 수 있었고 잘 이해못한 알고리즘도 이해하게 됐습니다~
```
#include <stdio.h>
#include <stdlib.h>
int sort(int* time, int length);
int* cal(int* arr ,int count);
int sum = 0;
void main(void) {
int n;
int count = 0;
int input[16];
scanf("%d",&n);
for(int i = 0 ; i < n; i++) {
scanf("%d",&input[i]);
}
int* time = (int*) malloc (sizeof(int) * n);
time = input;
n = sort(time ,n);
if(n%2 != 0) {
n--;
sum = time[n/2] + time[0];
}
int* temp = (int*) malloc (sizeof(int) * n);
temp = time;
int j = 0;
for(int i =0; i < n; i++) {
if(n/2 == i) {
j++;
temp[i] = time[j];
} else
temp[i] = time[j];
j++;
}
for(int i = 0 ; i < (n/2); i++) {
temp = cal(temp, n);
}
printf("\n%d\n",sum);
}
int* cal(int* arr ,int n) {
int* temp = (int*) malloc (sizeof(int) * n) ;
for(int i = 0 ; i < n ; i++) {
if(i < (n/2)) {
sum = sum + arr[((i+1)*2)-1];
if(arr[2] != 0 && n>2)
sum = sum + arr[i];
temp[i] = arr[i];
}
else {
temp[i] = 0;
}
}
return temp;
}
int sort(int* time, int length) {
int temp;
for(int i = 0 ; i < (length-1) ; i++) {
for(int j = 0 ; j < (length-1) ; j++) {
if(time[j] > time[j+1]) {
temp = time[j+1];
time[j+1] = time[j];
time[j] = temp;
}
}
}
return length;
}
```
허접한 풀이 ...
근데 예제에서 5 12 1 3 8 6 출력 결과 31나오던데 .. 29가 맞나요??
1,3 이 기숙사로 3
1이 정문 1
6, 8이 기숙사로 8
3이 정문 3
12,1이 기숙사로 12
1이 정문 1
1,3이 기숙사로 3
3+たす1+たす8+たす3+たす12+たす3 +たす1 =わ 31답변 감사합니다.
덕분에 코드 수정할 수 있었고 잘 이해못한 알고리즘도 이해하게 됐습니다~
```
#include <stdio.h>
#include <stdlib.h>
int sort(int* time, int length);
int* cal(int* arr ,int count);
int sum = 0;
void main(void) {
int n;
int count = 0;
int input[16];
scanf("%d",&n);
for(int i = 0 ; i < n; i++) {
scanf("%d",&input[i]);
}
int* time = (int*) malloc (sizeof(int) * n);
time = input;
n = sort(time ,n);
if(n%2 != 0) {
n--;
sum = time[n/2] + time[0];
}
int* temp = (int*) malloc (sizeof(int) * n);
temp = time;
int j = 0;
for(int i =0; i < n; i++) {
if(n/2 == i) {
j++;
temp[i] = time[j];
} else
temp[i] = time[j];
j++;
}
for(int i = 0 ; i < (n/2); i++) {
temp = cal(temp, n);
}
printf("\n%d\n",sum);
}
int* cal(int* arr ,int n) {
int* temp = (int*) malloc (sizeof(int) * n) ;
for(int i = 0 ; i < n ; i++) {
if(i < (n/2)) {
sum = sum + arr[((i+1)*2)-1];
if(arr[2] != 0 && n>2)
sum = sum + arr[i];
temp[i] = arr[i];
}
else {
temp[i] = 0;
}
}
return temp;
}
int sort(int* time, int length) {
int temp;
for(int i = 0 ; i < (length-1) ; i++) {
for(int j = 0 ; j < (length-1) ; j++) {
if(time[j] > time[j+1]) {
temp = time[j+1];
time[j+1] = time[j];
time[j] = temp;
}
}
}
return length;
}
```