[µ¿Àû °èȹ¹ý]



Å« ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ÀÛÀº ºÎºÐ ¹®Á¦·Î ºÐÇÒÇÑ µÚ ÇϳªÀÇ ºÎºÐ ¹®Á¦¿¡ ´ëÇÑ ÇØ´äÀ» ±¸ÇÑ´Ù.
ÀÌÈÄÀÇ ºÎºÐ ¹®Á¦¿¡ ´ëÇÑ ´äÀ» ±¸Çϱâ À§Çؼ­ ÀÌÀü¿¡ ±¸ÇÑ ºÎºÐ¹®Á¦ÀÇ ´äÀ» ÂüÁ¶ÇÑ´Ù. ÀÌ·¯ÇÑ °úÁ¤À» ÁøÇàÇÒ ¶§ ÀÌÀü¿¡ ÇØ°áÇÑ ºÎºÐ¹®Á¦¸¦ ÂüÁ¶Çؼ­ ´ÙÀ½ ºÎºÐ¹®Á¦ÀÇ ´äÀ» ±¸ÇÒ ¼ö ÀÖ´Ù.
ÀÌó·³ ÀÛÀº ºÎºÐ¹®Á¦µéÀÇ ÇØ¸¦ ¸ÕÀú ±¸ÇÏ¿© ÀúÀåÇÏ°í ´õ Å« ¹®Á¦ÀÇ ÇØ¸¦ ±¸ÇÒ ¶§ ÀÛÀº ¹®Á¦ÀÇ ÇØ¸¦ ¹Ýº¹ °è»êÇÏÁö ¾Ê°í ÀúÀåµÈ °á°ú¸¦ »ç¿ëÇÏ´Â °ÍÀ» ¸»ÇÑ´Ù.
À̶§ ²À ÇÊ¿äÇÑ °ÍÀÌ Á¡È­½ÄÀÌ´Ù.

Á¡È­ ½ÄÀ» ¼¼¿ì´Â ¹æ¹ý

1. ÁÖ¾îÁø ¹®Á¦ÀÇ ÇØ¸¦ ±¸Çϱâ À§ÇÑ ¼øÈ¯ÀûÀÎ ¼ºÁúÀ» Ç¥(1,2Â÷¿ø¹è¿­, Å×À̺í)·Î ±¸¼ºÇÏ¿©¾ß ÇÑ´Ù.
2. Àüü ¹®Á¦µµ ºÎºÐ¹®Á¦ ÇüÅ·ΠǥÇöÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. (Å« ¹®Á¦¸¦ ÀÛÀº ¹®Á¦·Î, ±ÔÄ¢¼ºÀ» ãÀ¸¸é °¡´ÉÇÏ´Ù.)
3. ¹®Á¦¸¦ ¾î¶»°Ô ºÎºÐ¹®Á¦·Î ºÐÇÒÇÒ °ÍÀÎÁö »ý°¢ÇØ¾ß ÇÑ´Ù.
4. ÀϹÝÀûÀ¸·Î µ¿Àû °èȹ¹ý ¹®Á¦´Â ÀÏÁ¤ ȸ¼öÀÇ ¼±ÅÃÀ» ¹Ýº¹ÇÏ´Â ±¸Á¶·Î ÀÌ·ç¾îÁ® ÀÖ´Ù.(Çϳª¾¿ Çϳª¾¿..)
5. ±× »óÅ¿¡¼­ÀÇ ¼±Åðú ±× ¼±Åà ÀüÀÇ »óŸ¦ °í·ÁÇ϶ó.
6. ÃÖÀû ÇØ¸¦ ã´Â ¹®Á¦¶ó¸é ±× °¡´É¼º Áß¿¡¼­ °¡Àå ÁÁÀº ¼±ÅÃÀ» ã¾Æ¶ó.
7. ´äÀ» ¾ò´Â °úÁ¤À» ÃßÀûÇÏ´Â ¹æ¹ýÀ» ¼³°èÇØ¾ß ÇÑ´Ù.

µ¿Àû °èȹ¹ýÀÇ Æ¯¼º

1. ÃÖÀû °áÁ¤ÀÇ ¼ø¼­°¡ Ãʱâ»óÅÂ¿Í °áÁ¤ÀÌ ¹«¾ùÀ̵çÁö °£¿¡ ³ª¸ÓÁöÀÇ ¸ðµç °áÁ¤µéÀº ù ¹øÂ°¿¡ ³ªÅ¸³­ »óÅ¿¡ °üÇØ¼­ ÃÖÀû°áÁ¤ ¼ø¼­¸¦ ±¸¼º½ÃŰ´Â ¿øÄ¢À» Áö´Ñ´Ù.
2. Çѹø ¾î¶² ºÎºÐ¹®Á¦°¡ ÇØ°áµÇ¸é ±× ÇØ¸¦ ±â¾ïÇÔÀ¸·Î½á °áÄÚ µÎ ¹ø ´Ù½Ã °è»êµÇÁö ¾Ê´Â´Ù.
3. ¸ðµç °¡´É¼º¿¡ ´ëÇÑ °í·Á°¡ ºÒÃæºÐÇÒ °æ¿ì ÃÖÀûÀÇ °á°ú¸¦ º¸ÀåÇÒ ¼ö ¾ø´Ù.
µ¿Àû °èȹ¹ýÀ» ±¸ÇöÇϱâ À§Çؼ­´Â ÃæºÐÈ÷ ¸¹Àº °¡´É¼º¿¡ ´ëÇÑ °í·Á¸¦ ÇØ¾ß ÇÑ´Ù.
¶ÇÇÑ, ´Ù¸¥ ¹æ¹ý·Ð¿¡ ºñÇØ ¸¹Àº Ç¥(¹è¿­)À» ÀÌ¿ëÇϹǷΠ¸Þ¸ð¸®¸¦ ¸¹ÀÌ ¿ä±¸ÇÑ´Ù.

ÁÖÀÇ: ÇѰ¡Áö¶óµµ À߸ø ±¸¼ºÇϰųª °èȹÇϸé 0Á¡ÀÔ´Ï´Ù.



1. ÃÖ´ë ºÎºÐ Áõ°¡¼ö¿­ ¹®Á¦


[¹®Á¦]

n°³ÀÇ ÀÚ¿¬¼öµéÀÌ ÁÖ¾îÁ³À» ¶§ ±× Áß¿¡¼­ °¡Àå ±æ°Ô Áõ°¡ÇÏ´Â (ÀÛÀº ¼ö¿¡¼­ Å« ¼ö)¿ø¼ÒµéÀÇ ÁýÇÕÀ» ã´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇ϶ó.


Input.txt

9

11 17 5 8 6 4 7 12 3


output.txt

4


[ºÐ¼®]

- ÃʱâÈ­

d[i]

11

17

5

8

6

4

7

12

3

c[i]

1

1

1

1

1

1

1

1

1

V[i]

-1

-1

-1

-1

-1

-1

-1

-1

-1

¨ç {11, 17}ÀÇ ¼ýÀÚ¸¸ ÀÖ´Ù°í °¡Á¤Çϰí

¨è {11, 17, 5}ÀÇ ¼ýÀÚ¸¸ ÀÖ´Ù°í °¡Á¤ÇÑ´Ù.

¨é Çϳª¾¿ ´Ã·Á°¡¸é¼­ ÃÖ´ë°ªÀ» ±¸ÇÑ´Ù.

¨ê ¼±ÅÃµÈ ¼ö¿Í ÀÌÀüÀÇ ¼öµé°ú ºñ±³ÇÏ¿© Å©¸é c[i]¸¦ 1¾¿ Áõ°¡½ÃŲ´Ù.

d[i]

11

17

5

8

6

4

7

12

3

c[i]

1

2

1

2

2

1

3

4

3

v[i]

-1

1

-1

3

3

-1

5

7

-1



¨ëÃßÀûÇÑ´Ù.

2. °¡¹æ¹®Á¦



[¹®Á¦] ÃÖ°í 17kgÀÇ ¹«°Ô¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Â °¡¹æÀÌ ÀÖ´Ù. ±×¸®°í °¢°¢ 3kg, 4kg, 7kg, 8kg, 9kgÀÇ ¹«°Ô¸¦ °¡Áø ¹°°ÇµéÀÌ ÀÖ´Ù. ÀÌ ¹°°ÇµéÀÇ °¡Ä¡´Â °¢°¢ 4,5,10,11,13ÀÌ´Ù. ÀÌ ¹°°ÇÀ» °¡¹æ¿¡ ´ã´Âµ¥ 17kgÀ» ³ÑÁö ¾ÊÀ¸¸é¼­ ÃÖ´ëÀÇ °¡Ä¡°¡ µÇµµ·Ï ÇÏ·Á¸é ¾î¶² Á¶ÇÕÀ¸·Î ¹°°ÇÀ» ´ã¾Æ¾ß ÇÒ±î?(À̶§ ¹°°ÇµéÀº Âɰ¶ ¼ö ¾ø´Ù)


input.txt

3 4

4 5

7 10

8 11

9 13


output.txt

24


[ºÐ¼®]


1. ù ¹øÂ° ¹°°Ç¸¸ ÀÖ´Ù°í °¡Á¤Çϸé


i

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

c[]

0

0

4

4

4

8

8

8

12

12

12

16

16

16

20

20

20

b[]

-1

-1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

2. ¸ðµç ¹°°ÇÀ» ¸ðµÎ Àû¿ëÇϸé


i

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

c[]

0

0

4

5

5

8

10

11

13

14

15

17

18

20

21

23

24

b[]

-1

-1

1

2

2

1

3

4

5

3

3

5

3

3

4

5

3

[Á¡È­½Ä]

1) Àû¿ëÇÑ ¹°°ÇÀ» ÀúÀåÇÑ´Ù. b[i] = j

2) ÃÖ°íÀÇ °¡Ä¡¸¦ ÀúÀåÇÑ´Ù. c[i] = v[j] + c[i-s[j]]

[ÇÁ·Î±×·¥]

#include<stdio.h>
int n,k,i,a[100]={0,},b[100]={0,},j,d[100]={0,},f[100]={0,},pp;
int input()
{
        FILE *ifp=fopen("input.txt","r");
        fscanf(ifp,"%d %d",&n,&k);
        for(i=1; i<=n; i++) fscanf(ifp,"%d %d",&a[i],&b[i]);
        for(i=1; i<=n; i++){
                d[i]=0;
                f[i]=-1;
        }
        fclose(ifp);
        return–-1;
}
int process()
{
        for(i=1; i<=n; i++){
                for(j=a[i]; j<=k; j++){
                        pp=d[j-a[i]]+b[i];
                        if(d[j]<pp){
                                d[j]=pp;
                                f[i]=i;
                        }
                }
        }
        return–-1;
}
int output()
{
        FILE *ofp=fopen("output.txt","w");
        fprintf(ofp,"%d",d[k]);
        fclose(ofp);
        return–-1;
}

int main()
{
        input();
        process();
        output();
        return–-1;
}



3. ¼ýÀÚ °í¸£±â



input.txt

7

3 1 1 5 5 4 6

output.txt

3

1 3 5


[ºÐ¼®]

¨ç ÀÔ·ÂÆÄÀÏ¿¡¼­ ¹è¿­·Î ÀԷ¹޴´Ù.

D[]

1

2

3

4

5

6

7

F[]

3

1

1

5

5

4

6

¨è ÀÌÂ÷¿ø ¹è¿­¿¡ ÀÔ·ÂÇÑ´Ù.

 

1

2

3

4

5

6

7

1

 

 

1

 

 

 

 

2

1

 

 

 

 

 

 

3

1

 

 

 

 

 

 

4

 

 

 

 

1

 

 

5

 

 

 

 

1

 

 

6

 

 

 

1

 

 

 

7

 

 

 

 

 

1

 

¨é ÃßÀûÇÑ ÈÄ ´Ù½Ã óÀ½À¸·Î µ¹¾Æ¿À¸é °á°ú¹è¿­¿¡ ÀúÀå

        131 (¿Ï¼º), 2131(x)

   ÃßÀûÇÏ´Â µ¿¾È stack¿¡ ÀúÀå ºñ±³ ¹Ýº¹ÇÑ´Ù.




4. µ¿Àü±³È¯¹®Á¦



´ÙÀ½°ú °°ÀÌ ¿©·¯ ´ÜÀ§ÀÇ µ¿ÀüµéÀÌ ÁÖ¾îÁ® ÀÖÀ» ¶§ °Å½º¸§µ·À» °¡Àå ÀûÀº ¼öÀÇ µ¿ÀüÀ¸·Î ±³È¯ÇØÁÖ·Á¸é ¾î¶»°Ô ÁÖ¸é µÇ´Â°¡?


input.txt

15 4

50 12 5 1


output.txt

3 3 3


[ºÐ¼®]


1) 1¿øÀ» Àû¿ëÇϸé

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

c[]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

t[]

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

2) 5¿øÀ» Àû¿ëÇϸé

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

c[]

1

2

3

4

1

2

3

4

5

2

3

4

5

6

3

t[]

0

0

0

0

1

1

1

1

1

1

1

1

1

1

1

3) ¸ðµç µ¿ÀüÀ» Àû¿ëÇϸé

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

c[]

1

2

3

4

1

2

3

4

5

2

3

1

2

3

3

t[]

0

0

0

0

1

1

1

1

1

1

1

2

2

2

1

[Á¡È­½Ä]


- ´ÜÀ§µ¿ÀüÀÌ °Å½º¸§ ±Ý¾×º¸´Ù´Â ÀÛ¾Æ¾ß ÇÑ´Ù. (set[j]<i)

- »ç¿ëµÈ µ¿Àü¼ö°¡ ÇöÀç Àû¿ëµÇ´Â ´ÜÀ§ µ¿ÀüÀ» »ç¿ëÇÑ µ¿Àü ¼ö º¸´Ù ¸¹À¸¸é ÇöÀç Àû¿ëµÇ´Â µ¿ÀüÀ¸·Î ¹Ù²ã¾ß ÇÑ´Ù.(c[i]>c[i-s[j]+1)



[ÇÁ·Î±×·¥]

#include<stdio.h>
int m,n,i,j,k[100]={0,},a[100]={0,},b[100]={0,},kk,hh;
int input()
{
        FILE *ifp;
        ifp=fopen("input.txt","r");
        fscanf(ifp,"%d %d",&m,&n);
        for(i=1; i<=n; i++){
                fscanf(ifp,"%d",&k[i]);
        }

        a[0]=0;
        for(i=1; i<=m; i++){
                a[i]=999;
                b[i]=-1;
        }
        fclose(ifp);
        return–-1;
}
int process()
{
        for(i=1; i<=n; i++){
                for(j=k[i]; j<=m; j++){
                        kk=a[j-k[i]]+1;
                        if(a[j]>kk){
                               b[j]=i;
                               a[j]=kk;
                        }
                }
        }
        return–-1;
}
int output()
{
        FILE *ofp;
        ofp=fopen("output.txt","w");

        fprintf(ofp,"%d",a[m]);
        fclose(ofp);
        return–-1;
}
int main()
{
        input();
        process();
        output();
        return–-1;
}




5. ±â°è ¸¸µé±â


[¹®Á¦] ÇÑ °øÀå¿¡¼­ µ¿ÀÏÇÑ Á¦Ç° n°³¸¦ ¸¸µé·Á°í ÇÑ´Ù. ÀÌ Á¦Ç°À» ¸¸µé ¼ö ÀÖ´Â ¼­·Î ´Ù¸¥ ±â°è°¡ m°³°¡ ÀÖ´Ù°í Çϰí, °¢°¢ÀÇ ±â°è¿¡¼­ Á¦Ç°À» ¸¸µå´Âµ¥ »ç¿ëµÇ´Â ½Ã°£ÀÌ C1, C2, C3,,, Cm·Î ¼­·Î ´Ù¸£´Ù°í ÇÑ´Ù.

À̶§ n°³¸¦ »ý»êÇϴµ¥ µé¾î°¡´Â °¡Àå ÀÛÀº ½Ã°£ °ªÀÎ g¸¦ ±¸ÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇϽÿÀ!


input.txt

5

3

1 3 4


output.txt

4


[Á¡È­½Ä]

for(i=1; i<=9; i++){

        k=1;

        for(j=1; j<=0; j--){

                if(use(j)+m(j) < use(k)+m(k)) k = j;

        }

        use[k] = use[k]+m[k];

}




6. ÃÖ´ë °øÅë ºÎºÐ ¹®ÀÚ¿­ ã±â



µÎ °³ÀÇ ¹®ÀÚ¿­ÀÌ ´ÙÀ½°ú °°ÀÌ ÁÖ¾îÁ³À» ¶§ µÎ ¹®ÀÚ¿­ÀÇ ºÎºÐ ¹®ÀÚ¿­ Áß

°¡Àå ±ä °ÍÀ» ±¸ÇϽÿÀ


input.txt

a b c b d a b

b d c a b a


output.txt

4


[ºÐ¼®]


j

i

0

b

d

c

a

b

a

0

0

0

0

0

0

0

0

a

0

0

0

0

1

1

1

b

0

1

1

1

1

2

2

c

0

1

1

2

2

2

2

b

0

1

1

2

2

3

3

d

0

1

2

2

2

3

3

a

0

1

2

2

3

3

4

b

0

1

2

2

3

4

4

[Á¡È­½Ä]


1) i=0 or j=0 d[i][j] = 0

2) a[i] = b[j] d[i][j] = d[i-1][j-1]+1

3) a[i] != b[j] d[i-1][j] >= d[i][j-1] d[i][j] = d[i-1][j]

                 d[i-1][j] < d[i][j-1] d[i][j] = d[i][j-1]

[ÇÁ·Î±×·¥]

#include<stdio.h>
#include<string.h>
int aa, bb, i, j;
char a[100]={0,},b[100]={0,}, d[100][100]={{0,},};
int input()
{
   FILE *ifp=fopen("input.txt","r");
   fscanf(ifp,"%s %s", a, b);
   aa=strlen(a);         bb=strlen(b);
   for(i=1; i<=bb; i++){
     for(j=1; j<=aa; j++){
       if(b[i] == a[j]){
          d[i][j]=d[i-1][j-1]+1;
       }
       else{
          if(d[i-1][j] >= d[i][j-1]){
              d[i][j]=d[i-1][j];
            }else{
              d[i][j]=d[i][j-1];
              }
           }
       }
   }
   fclose(ifp);
   return–-1;
}

int output()
{
   FILE *ofp=fopen("output.txt","w");
   fprintf(ofp,"%d",d[bb][aa]);
   fclose(ofp);
   return–-1;
}

int main()
{
   input();
   output();
   return–-1;
}




7. ÃÖ¼Ò ÆíÁý ¹®Á¦


µÎ ¹®ÀÚ¿­ÀÌ ÁÖ¾îÁ³À» ¶§ óÀ½ ¹®ÀÚ¿­À» ´ÙÀ½ ¹®ÀÚ¿­·Î ÆíÁý(»ðÀÔ, »èÁ¦, ´ëü)ÇÏ¿© ¹Ù²Ù·Á ÇÑ´Ù.

À̶§ ÆíÁýÇϴ Ƚ¼ö°¡ ÃÖ¼Ò°¡ µÇµµ·Ï ó¸®ÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇϽÿÀ


input.txt

aabab

babb


output.txt

2


[ºÐ¼®]


j

i

0

b

a

b

b

0

0

1

2

3

4

a

1

1

1

2

3

a

2

2

1

2

3

b

3

2

2

1

2

a

4

3

2

2

2

b

5

4

3

2

2

[Á¡È­½Ä]


1) i=0 d[i][j] = d[i][j-1]+1 (<- »ðÀÔ)

2) j=0 d[i][j] = d[i-1][j]+1 (   »èÁ¦)

3) a[j]=b[i] d[i][j] = d[i-1][j-1] (±×´ë·Î)

4) a[j] != b[i] 1) d[i-1][j] < d[j][j-1] => d[i][j] = d[i-1][j]+1 (»èÁ¦)

                    2) d[i-1][j] > d[i][j-1] => d[i][j] = d[i][j-1]+1 (»ðÀÔ)

                        3) d[i-1][j] = d[i][j-1] => d[i][j] = d[i-1][j] (´ëü)




                              8. °¡Àå ³ôÀº ž ½×±â


[¹®Á¦] ¹Ø¸éÀÌ Á¤»ç°¢ÇüÀÎ Á÷À°¸éü º®µ¹µéÀ» »ç¿ëÇÏ¿© žÀ» ½×°íÀÚ ÇÑ´Ù. žÀº º®µ¹À» ÇÑ °³¾¿ ¾Æ·¡¿¡¼­ À§·Î ½×À¸¸é¼­ ¸¸µé¾î °£´Ù. ¾Æ·¡ÀÇ Á¶°ÇÀ» ¸¸Á·Çϸ鼭 °¡Àå ³ôÀº žÀ» ½×À» ¼ö ÀÖ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇϽÿÀ.

(Á¶°Ç1) º®µ¹Àº ȸÀü½Ãų ¼ö ¾ø´Ù.

(Á¶°Ç2) ¹Ø¸éÀÇ ³ÐÀ̰¡ °°Àº º®µ¹Àº ¾øÀ¸¸ç, ¶ÇÇÑ ¹«°Ô°¡ °°Àº º®µ¹µµ ¾ø´Ù.

(Á¶°Ç3) º®µ¹µéÀÇ ³ôÀÌ´Â °°À» ¼öµµ ÀÖ´Ù.

(Á¶°Ç4) žÀ» ½×À» ¶§ ¹Ø¸éÀÌ Á¼Àº º®µ¹ À§¿¡ ¹Ø¸éÀÌ ³ÐÀº º®µ¹À» ³õÀ» ¼ö ¾ø´Ù.

(Á¶°Ç5) ¹«°Ô°¡ ¹«°Å¿î º®µ¹À» ¹«°Ô°¡ °¡º­¿î º®µ¹ À§¿¡ ³õÀ» ¼ö ¾ø´Ù.


input.txt

5

2 3 4

4 4 8

9 2 3

16 2 5

1 5 2

output.txt

3

5 3 1


[ºÐ¼®]

1) º®µ¹ÀÇ ³ÐÀÌ ¼ø¼­·Î Á¤·Ä

2) ÃÖ´ë°ªÀ» ±¸ÇÑ ÈÄ ÃßÀû

h[]

 

1

4

3

2

5

1

3 (-1)

 

 

 

 

4

 

2 (-1)

 

 

 

5

 

 

5 (1)

 

 

2

 

 

 

4 (-1)

 

5

 

 

 

 

10 (3)

±×·¯¹Ç·Î 5 3 1 -1



[ÇÁ·Î±×·¥]

#include<stdio.h>
int ff[100]={0,},k[100]={0,},j,mm,i,n,d[100][100]={{0,},},kk,f[100]={0,},e[100]={0,};
int input()
{
        FILE *ifp;
        ifp=fopen("input.txt","r");
        fscanf(ifp,"%d",&n);
        for(i=1; i<=n; i++){
               f[i]=i;
               fscanf(ifp,"%d %d %d",&d[1][i],&d[2][i],&d[3][i]);
                
        }                        
        for(i=1; i<=n-1; i++){
               for(j=i+1; j<=n; j++){
                       if(d[1][i] < d[1][j]){
                               f[0]=f[i];
                               f[i]=f[j];
                               f[j]=f[0];

                               mm=d[1][i];
                               d[1][i]=d[1][j];
                               d[1][j]=mm;

                               mm=d[2][i];
                               d[2][i]=d[2][j];
                               d[2][j]=mm;
    
                               mm=d[3][i];
                               d[3][i]=d[3][j];
                               d[3][j]=mm;
                       }
                }
        }

        for(i=1; i<=n; i++){
                k[i]=d[2][i];
                ff[i]=0;
        }
        for(i=1; i<=n; i++){
                if(d[2][i-1]<k[i]){
                        ff[i]=ff[i]+1;
                        e[i]=f[i];
                }
        }
        for(i=1; i<=n; i++) kk=kk+ff[i];
        fclose(ifp);
        return–-1;
}
int output()
{
        FILE *ofp=fopen("output.txt","w");
        fprintf(ofp,"%d\n",kk);
        for(i=n; i>=1; i--){
                if(e[i] !=0){
                      if(i==kk+1){
                           fprintf(ofp,"%d\n",e[i]+1);
                      }else{
                           fprintf(ofp,"%d\n",e[i]);
                        }
                }
        }
        fclose(ofp);
        return–-1;
}
int main()
{
        input();
        output();
        return–-1;
}



9. ±â¾÷ ÅõÀÚ


[¹®Á¦]

¾î¶² ÅõÀÚ°¡°¡ ¿©·¯ ±â¾÷µé¿¡°Ô µ·À» ÅõÀÚÇØ¼­ ÃÖ´ëÀÇ ÀÌÀÍÀ» ¾ò°íÀÚ ÇÑ´Ù. ´Ü, ÅõÀÚ´Â ¸¸¿ø ´ÜÀ§·Î ÇÒ ¼ö ÀÖÀ¸¸ç °¢ ±â¾÷Àº ÅõÀÚÇÒ¼ö·Ï ¸¹Àº ÀÌÀÍÀ» ÅõÀÚ°¡¿¡°Ô µ¹·ÁÁØ´Ù. µ·À» ÅõÀÚÇÏÁö ¾ÊÀ¸¸é ´ç¿¬È÷ ¾ò°ÔµÇ´Â ÀÌÀ͵µ ¾ø´Ù.

input.txt

4 2

1 5 1

2 6 5

3 7 9

4 10 15


output.txt

0 4

15


[ºÐ¼®]

1) ¸ÕÀú, ÅõÀÚÇÏ´Â ±â¾÷ÀÌ ¾øÀ» ¶§ ÃʱâÈ­

2)

 

0

1

2

0

0

 

 

1

0

 

 

2

0

 

 

3

0

 

 

4

0

 

 

´ÙÀ½ 1¹ø ±â¾÷±îÁö¸¸ ÀÖ´Ù°í °¡Á¤Çϸé

? 0¹ø°ú 1¹ø ±â¾÷ »çÀÌ¿¡¼­

ÅõÀÚ¾×ÀÌ 0¸¸¿øÀÌ¸é ´ç¿¬È÷ ÀÌÀÍÀº 0À̰í

ÅõÀÚ¾×ÀÌ 1¸¸¿øÀÏ °æ¿ì

¨ç          0¹øà0¿ø

1¹øà1¸¸¿ø

¨è          0¹øà1¸¸¿ø

1¹øà0¿ø

    ¨ç, ¨è¹ø¿¡¼­ ¨çÀº 0+5=5¸¸¿ø ÀÌÀÍ, ¨è´Â 0+0=0¸¸¿ø ÀÌÀÍÀ» ¾ò´Â´Ù.

    ±×·¯¹Ç·Î ÃÖ´ë°ªÀº 5¸¸¿øÀÌ µÈ´Ù.

    °°Àº ¹æ¹ýÀ¸·Î 2¸¸¿øÀÏ °æ¿ì´Â ÃÖ´ë°ªÀº 6¸¸¿øÀÌ µÈ´Ù.

3) 2¹ø ±â¾÷ ±îÁö ¸ðµÎ Àû¿ëÇϸé


 

0

1

2

0

0

0

0

1

0

5

1

5(ÃÖ´ëÀÌÀÍ)

1(ÅõÀڱݾ×)

2

0

6

2

6

1

3

0

7

3

10

2

4

0

8

4

15

4

[Á¡È­½Ä]

if(d[j][i] < d[k][i-1] + in[j-k][i]){

        d[j][i] = d[k][i-1]+in[j-k][i];

        in[j][i]=j-k;

}


[ÇÁ·Î±×·¥]

#include <stdio.h>
int max(int x, int y);
void follow();
int n, m;
int k;
int in_data[301][21];
int table[301][21], table2[301][21];
int fol[21];
void main()
{
        FILE *in, *out;
        in = fopen("input.txt", "r");
        fscanf(in, "%d %d", &n, &m);
        for(int i = 1; i <= n; i ++) {
                int num;
                fscanf(in, "%d", &num);
                for(int j = 1; j <= m; j ++) {
                        fscanf(in, "%d", &in_data[num][j]);
                        table[num][j] = in_data[num][j];
                }
        }
        fclose(in);
        for(int j = 2; j <= m; j ++) {
                for(int i = 1; i <= n; i ++) {
                        table[i][j] = max(i, j);
                        table2[i][j] = k;
                }
                for(i = 1; i <= n; i ++) {
                        in_data[i][j] = table[i][j];
                }
        }
        out = fopen("output.txt", "w");
        fprintf(out, "%d\n", table[n][m]);
        follow();
        for(i = m; i > 0; i --) {
                fprintf(out, "%d ", fol[i]);
        }

        fclose(out);
}
int max(int x, int y)
{
        int mm = 0, mi;
        for(int i = 0; i <= x; i ++) {
                int j = x – i;
                if(mm < in_data[j][y] + in_data[i][y - 1]) {
                        mm = in_data[j][y] + in_data[i][y – 1];
                        mi = i;
                }
        }
        k = mi;

        return mm;
}

void follow()
{
        int i = n;
        int cnt = 0;

        for(int j = m; j >= 1; j --) {
                fol[++ cnt] = i – table2[i][j];
                i = table2[i][j];
        }
}



10. ¹éÈ­Á¡ ÄíÆù ¹Þ±â


[¹®Á¦] ÇÑ ¼ÒºñÀÚ°¡ 4¸¸¿øÀ» °®°í µÎ °³ÀÇ ¹éÈ­Á¡¿¡¼­ °¢°¢ ¸¸¿ø´ÜÀ§·Î ¹°°ÇÀ» »òÀ» °æ¿ì ¾òÀ» ¼ö ÀÖ´Â ÄíÆùÀº ´ÙÀ½°ú °°´Ù.


input.txt

4 2

1 5 1

2 6 5

3 7 9

4 10 15


output.txt

0 4

15


[Á¡È­½Ä]

1) i ¹éÈ­Á¡¿¡¼­ 0¿øÀÇ ¹°°ÇÀ» »ç´Â °æ¿ì

c[i][j] = c[i-1][j] + a[i][0]

2) i¹éÈ­Á¡¿¡¼­ 1¸¸¿øÀÇ ¹°°ÇÀ» »ç´Â °æ¿ì

c[i][j] = c[i-1][j-1]+a[i][1]

3) i¹éÈ­Á¡¿¡¼­ j¸¸¿øÀÇ ¹°°ÇÀ» »ç´Â °æ¿ì

c[i][j] = c[i-1][0] + a[i][j]


°á·ÐÀûÀ¸·Î c[i][j] = MAX{ c[i-1][j-k] + a[i][k]}

(´Ü, k´Â 0<=k<=j ÀÎ Á¤¼ö)