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