Page 216 고등학교 프로그래밍 교과서
P. 216










4 운송비가 적은 자료부터 배정: 먼저 배열 work의 처음(k=0) 자료를 꺼내서 공장,
국가 번호를 각각 factory와 nation에 대입한다. 재고량이 충분하면 수출량을
result에 저장한 후 재고량을 감소시킨다. 만약 재고량이 부족하면 현재 재고량

을 모두 수출량으로 result에 저장한 후 수출량을 감소시킨다. 이러한 과정을
반복하면 최종적으로 각 공장에서 국가별로 수출해야 하는 수량이 2차원 배열

result에 저장된다.

work[4] [3] 배열의 저장 자료 15 for (int k = 0; k < 4; k++) {
배열 work에는 운송비에 따라 오름 16 factory = work[k][1];
차순으로 정렬한 데이터가 저장되 17 nation = work[k][2];
며 다음과 같다. 재고량이 충분한 경우
18 if (outport[nation] <= stock[factory])
19 {
운송비 공장 국가
20 result[factory][nation] = outport[nation];
0 4 1 1
21 stock[factory] -= outport[nation];
1 5 1 0
22 outport[nation] = 0;
2 11 0 0
23 }
3 16 0 1
24 else 재고량이 부족한 경우
* 공장 인덱스: 0: (부산), 1: (인천)
25 {
* 국가 인덱스: 0: (A 국가), 1: (B 국가)
26 result[factory][nation] = stock[factory];
27 outport[nation] -= stock[factory];
28 stock[factory] = 0;
29 }
30 }

5 운송비가 적은 자료부터 배열 work에 저장: 사용자 정의 함수 costSort( )는 배열
cost를 검색하여 운송비가 적은 자료부터 work 배열에 저장하는 프로그램이다.


38 void costSort( ) { 운송비가 적은 순서대로 정렬
39 int factory, nation, min;
40 for (int k = 0; k < 4; k++) {
41 min = 999; 현재 최소 비용이 999라고 가정
42 for (int i = 0; i < 2; i++) {
43 for (int j = 0; j < 2; j++) {
44 if (cost[i][j] > 0 && cost[i][j] < min)
45 {
46 min = cost[i][j];
47 factory = i; nation = j;
48 }
49 }
50 }
51 work[k][0] = min;
52 work[k][1] = factory;
53 work[k][2] = nation;
54 cost[factory][nation] = 0; 운송 비용을 0으로 하여 다음 작업에서 제외
55 }
56 }



214 Ⅲ. 프로그래밍 설계와 구현





(책)2015프로그래밍-교과서3차심의본 본문.indb 214 2017-09-05 오후 4:16:54
   211   212   213   214   215   216   217   218   219   220   221