변경이력

돌아가기
2 24개 문자 추가 6개 문자 삭제

2017/01/10 09:42

Jeon Jihyeon

C로작성하였습니다. ===================== 부족한 부분이나 개선점은 지적 부탁드려용 ```{.c} #include <stdio.h> int main(){ int truck_n = 0, Bridge_w = 0, Weight_L = 0; int a[100] = {0,}; int i = 0, j =0, temp = 0; int ans = 0; int status = 0; int *Bridge_Array; FILE *fp; fp = fopen("input_1.txt","rt"); if(fp == NULL){ printf("파일 읽기 실패\r\n"); system("pause"); return 1; } //트럭수, 다리길이, 다리 최대하중 fscanf(fp, "%d %d %d", &truck_n, &Bridge_w, &Weight_L); //트럭 무게 읽기 for(i = 0; i < truck_n; i++){ fscanf(fp, "%d", &a[i]); } //다리 길이에 맞는 배열 만들기 Bridge_Array = (int*)malloc(sizeof(int)*Bridge_w); for(j = 0; j < Bridge_w; j++){ Bridge_Array[j] = 0; } //For debug printf("트럭갯수 : %d, 다리 길이 : %d, 최대 하중 : %d \r\n", truck_n, Bridge_w, Weight_L); printf("각 트럭 무게 : "); for(i = 0; i<truck_n; i++){ printf("%d ", a[i]); } printf("\r\n"); ////// i = 0; j = 0; status = Bridge_w; while(1){ int sum_Weight = 0; int k = 0; if(i == truck_n){ //마지막 트럭이 출발함 status --; }else{ //아직 가야할 트럭 남음 //다리 마지막 위치를 제외한 위치의 무게 SUM for(k=0; k<(Bridge_w-1); k++){ sum_Weight += Bridge_Array[k]; } //+새로운 트럭 무게 sum_Weight += a[i]; } //트럭 이동 for(k=Bridge_w - 1; k != 0; k--){ Bridge_Array[k] = Bridge_Array[k-1]; } //최대 하중을 넘지 않고, 가야할 트럭이 남아있으면, if((sum_Weight <= Weight_L) && (i < truck_n)){ //새 트럭 출발 Bridge_Array[0] = a[i]; i++; }else{ //무게 0 대입 Bridge_Array[0] = 0; } //For debug Start /* for(j = 0; j<Bridge_w; j++){ printf("%d ", Bridge_Array[j] ); } printf("\r\n"); */ //For debug End ans++; if(status == 0){ break; } } printf("ans : %d \r\n", ans); fclose(fp); system("pause"); return 0; } ```
C로작성하였습니다. ===================== 부족한 부분이나 개선점은 지적 부탁드려용 ```{.c} #include <stdio.h> int main(){ int truck_n = 0, Bridge_w = 0, Weight_L = 0; int a[100] = {0,}; int i = 0, j =0, temp = 0; int ans = 0; int status = 0; int *Bridge_Array; FILE *fp; fp = fopen("input_1.txt","rt"); if(fp == NULL){ printf("파일 읽기 실패\r\n"); system("pause"); return 1; } //트럭수, 다리길이, 다리 최대하중 fscanf(fp, "%d %d %d", &truck_n, &Bridge_w, &Weight_L); //트럭 무게 읽기 for(i = 0; i < truck_n; i++){ fscanf(fp, "%d", &a[i]); } //다리 길이에 맞는 배열 만들기 Bridge_Array = (int*)malloc(sizeof(int)*Bridge_w); for(j = 0; j < Bridge_w; j++){ Bridge_Array[j] = 0; } //For debug printf("트럭갯수 : %d, 다리 길이 : %d, 최대 하중 : %d \r\n", truck_n, Bridge_w, Weight_L); printf("각 트럭 무게 : "); for(i = 0; i<truck_n; i++){ printf("%d ", a[i]); } printf("\r\n"); ////// i = 0; j = 0; status = Bridge_w; while(1){ int sum_Weight = 0; int k = 0; if(i == truck_n){ //마지막 트럭이 출발함 status --; }else{ //아직 가야할 트럭 남음 //다리 마지막 위치를 제외한 위치의 무게 SUM for(k=0; k<(Bridge_w-1); k++){ sum_Weight += Bridge_Array[k]; } //+새로운 트럭 무게 sum_Weight += a[i]; } //트럭 이동 for(k=Bridge_w - 1; k != 0; k--){ Bridge_Array[k] = Bridge_Array[k-1]; } //최대 하중을 넘지 않고, 가야할 트럭이 남아있으면, if((sum_Weight <= Weight_L) && (i < truck_n)){ //새 트럭 출발 Bridge_Array[0] = a[i]; i++; }else{ //무게 0 대입 Bridge_Array[0] = 0; } //For debug Start /* for(j = 0; j<Bridge_w; j++){ printf("%d ", Bridge_Array[j] ); } printf("\r\n"); */ //For debug End ans++; if(status == 0){ break; } } printf("ans : %d \r\n", ans); fclose(fp); system("pause"); return 0; } ```
1 Original

2017/01/10 09:41

Jeon Jihyeon

코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.