From f804ce72f4243133fc2ec0cd5379c5ce86747b4e Mon Sep 17 00:00:00 2001 From: yj_ai Date: Wed, 22 Feb 2023 22:24:29 +0900 Subject: [PATCH 1/2] first commit --- .DS_Store | Bin 0 -> 6148 bytes week7/.DS_Store | Bin 0 -> 6148 bytes week8/.DS_Store | Bin 0 -> 6148 bytes week8/youngjun/1261 | Bin 0 -> 49864 bytes week8/youngjun/1261.c | 79 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 79 insertions(+) create mode 100644 .DS_Store create mode 100644 week7/.DS_Store create mode 100644 week8/.DS_Store create mode 100755 week8/youngjun/1261 create mode 100644 week8/youngjun/1261.c diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fb155348cc04621b50d34ab52cb12cbabc590fd6 GIT binary patch literal 6148 zcmeHKyK2Kg5Zp}^Ft|~f@_r#zQXWG70{=jWl_~}oA*5C1@A9X4_7Q>*u7n#gEB5AY zwR4B2xYde?c0a?5NGl>6xS^bFn47&fpV>o34Au8|9lj68kJITm%e@sa?vwn=C!Q~v z@c+Yaf7{{|8Wo@dRDcRl0V=Rafvl#R?V?>srUF!8jSATPP~e6&aSZgU1B15!zy@JA z%)OTY77GAt;uwesOoIvxs%DF!K}Wn~UQHYWgD&bPW1l=(vqMoo9r5DnqBW2s6`%rB z1s-GBTK(U_Z}k6D5?54!3am;2ZTfxR;ghnq&OXj+ZGpeTE$0F^!`vwtyc`3)9AjbS e_}P;puh<;#YvLH_bi|zw72%lKs&oy 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 F_&3S@6^Z}= literal 0 HcmV?d00001 diff --git a/week8/youngjun/1261.c b/week8/youngjun/1261.c new file mode 100644 index 0000000..7a26051 --- /dev/null +++ b/week8/youngjun/1261.c @@ -0,0 +1,79 @@ +//최단거리 + +#include +#include +int INF = 10000; + + +int M,N; + +int dx[4] = {1,-1,0,0}; +int dy[4] = {0,0,1,-1}; + +void dijkstra(int maze[][M+1],int answer[][M+1]){ + int front = 0, rear = 0; + int q[M*N*4][2]; + q[front][0] = 1; + q[front][1] = 1; + rear++; + answer[1][1] = 0; // 초기 거리값 = 0 + + while (front < rear) + { + int cx = q[front][0]; + int cy = q[front][1]; + front++; + + for (int i = 0; i < 4; i++) + { + int nx = cx + dx[i]; + int ny = cy + dy[i]; + + if (nx < 1 || nx > N || ny < 1 || ny > M) + continue; + if (maze[nx][ny] == 1) //벽을 지날때 + { + if (answer[nx][ny] > answer[cx][cy] + 1) + { + answer[nx][ny] = answer[cx][cy] + 1; + q[rear][0] = nx; // 이 시점에서 rear == front !! + q[rear][1] = ny; + rear++; + } + } + else if (maze[nx][ny] == 0) + { + if (answer[nx][ny] > answer[cx][cy]) //빈 방을 지날 때 + { + answer[nx][ny] = answer[cx][cy]; + q[rear][0] = nx; + q[rear][1] = ny; + rear++; + } + } + } + } +} + +int main(){ + scanf("%d%2d",&M,&N); + int maze[N+1][M+1]; + int answer[N+1][M+1]; + + + for (int i = 1; i <= N; i++) + { + getchar(); + for (int j = 1; j <= M; j++) + { + scanf("%1d",&maze[i][j]); + answer[i][j] = INF; + } + } + + dijkstra(maze,answer); + + printf("\n%d",answer[N][M]); + + return 0; +} \ No newline at end of file From 1597323945966c6e3b402eef25f64c9cbc7bbfb3 Mon Sep 17 00:00:00 2001 From: yj_ai Date: Wed, 22 Feb 2023 22:34:37 +0900 Subject: [PATCH 2/2] second commit --- .DS_Store | Bin 6148 -> 6148 bytes week1/.DS_Store | Bin 0 -> 6148 bytes week1/youngjun/1000.c | 8 + week1/youngjun/1001.c | 8 + week1/youngjun/1008.c | 8 + week1/youngjun/10172.c | 10 ++ week1/youngjun/10430.c | 13 ++ week1/youngjun/10869.c | 12 ++ week1/youngjun/10926.c | 9 ++ week1/youngjun/10998.c | 8 + week1/youngjun/18108.c | 8 + week1/youngjun/25083.c | 11 ++ week1/youngjun/2557.c | 5 + week1/youngjun/2558.c | 15 ++ week1/youngjun/3003.c | 14 ++ week2/.DS_Store | Bin 0 -> 6148 bytes week3/.DS_Store | Bin 0 -> 6148 bytes week3/youngjun/11729.c | 33 ++++ week3/youngjun/1431.c | 103 ++++++++++++ week3/youngjun/17478.c | 59 +++++++ week3/youngjun/18870.c | 1 + week3/youngjun/2447.c | 58 +++++++ week4/.DS_Store | Bin 0 -> 6148 bytes week4/youngjun/1003 | Bin 0 -> 33696 bytes week4/youngjun/1003.c | 80 ++++++++++ week4/youngjun/12865.c | 48 ++++++ week4/youngjun/1932 | Bin 0 -> 33432 bytes week4/youngjun/1932.c | 87 ++++++++++ week4/youngjun/2156 | Bin 0 -> 33280 bytes week4/youngjun/2156.c | 41 +++++ week4/youngjun/2193 | Bin 0 -> 33256 bytes week4/youngjun/2193.c | 25 +++ week5/.DS_Store | Bin 0 -> 6148 bytes ...34\352\267\270\353\236\230\353\260\215.md" | 66 ++++++++ week6/.DS_Store | Bin 0 -> 6148 bytes week6/youngjun/.DS_Store | Bin 0 -> 6148 bytes week6/youngjun/10026 | Bin 0 -> 33352 bytes week6/youngjun/10026.c | 92 +++++++++++ week6/youngjun/1012 | Bin 0 -> 33496 bytes week6/youngjun/1012.c | 125 +++++++++++++++ week6/youngjun/1260 | Bin 0 -> 33848 bytes week6/youngjun/1260.c | 113 +++++++++++++ week6/youngjun/2178 | Bin 0 -> 33376 bytes week6/youngjun/2178.c | 83 ++++++++++ week6/youngjun/2589 | Bin 0 -> 33424 bytes week6/youngjun/2589.c | 151 ++++++++++++++++++ ...\250 \353\260\234\355\221\234 DFS, BFS.md" | 71 ++++++++ week6/youngjun/QUEUE.h | 69 ++++++++ week7/.DS_Store | Bin 6148 -> 6148 bytes week7/youngjun/14889 | Bin 0 -> 50224 bytes week7/youngjun/14889.c | 130 +++++++++++++++ week7/youngjun/15649 | Bin 0 -> 33336 bytes week7/youngjun/15649.c | 42 +++++ week7/youngjun/15650 | Bin 0 -> 33336 bytes week7/youngjun/15650.c | 42 +++++ week7/youngjun/15652 | Bin 0 -> 33336 bytes week7/youngjun/15652.c | 34 ++++ week7/youngjun/2580.c | 0 ...61\355\212\270\353\236\230\355\202\271.md" | 38 +++++ week8/.DS_Store | Bin 6148 -> 6148 bytes 60 files changed, 1720 insertions(+) create mode 100644 week1/.DS_Store create mode 100644 week1/youngjun/1000.c create mode 100644 week1/youngjun/1001.c create mode 100644 week1/youngjun/1008.c create mode 100644 week1/youngjun/10172.c create mode 100644 week1/youngjun/10430.c create mode 100644 week1/youngjun/10869.c create mode 100644 week1/youngjun/10926.c create mode 100644 week1/youngjun/10998.c create mode 100644 week1/youngjun/18108.c create mode 100644 week1/youngjun/25083.c create mode 100644 week1/youngjun/2557.c create mode 100644 week1/youngjun/2558.c create mode 100644 week1/youngjun/3003.c create mode 100644 week2/.DS_Store create mode 100644 week3/.DS_Store create mode 100644 week3/youngjun/11729.c create mode 100644 week3/youngjun/1431.c create mode 100644 week3/youngjun/17478.c create mode 100644 week3/youngjun/18870.c create mode 100644 week3/youngjun/2447.c create mode 100644 week4/.DS_Store create mode 100755 week4/youngjun/1003 create mode 100644 week4/youngjun/1003.c create mode 100644 week4/youngjun/12865.c create mode 100755 week4/youngjun/1932 create mode 100644 week4/youngjun/1932.c create mode 100755 week4/youngjun/2156 create mode 100644 week4/youngjun/2156.c create mode 100755 week4/youngjun/2193 create mode 100644 week4/youngjun/2193.c create mode 100644 week5/.DS_Store create mode 100644 "week5/youngjun/5\354\243\274\354\260\250 \353\260\234\355\221\234 \353\213\244\354\235\264\353\202\230\353\257\271 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.md" create mode 100644 week6/.DS_Store create mode 100644 week6/youngjun/.DS_Store create mode 100755 week6/youngjun/10026 create mode 100644 week6/youngjun/10026.c create mode 100755 week6/youngjun/1012 create mode 100644 week6/youngjun/1012.c create mode 100755 week6/youngjun/1260 create mode 100644 week6/youngjun/1260.c create mode 100755 week6/youngjun/2178 create mode 100644 week6/youngjun/2178.c create mode 100755 week6/youngjun/2589 create mode 100644 week6/youngjun/2589.c create mode 100644 "week6/youngjun/6\354\243\274\354\260\250 \353\260\234\355\221\234 DFS, BFS.md" create mode 100644 week6/youngjun/QUEUE.h create mode 100755 week7/youngjun/14889 create mode 100644 week7/youngjun/14889.c create mode 100755 week7/youngjun/15649 create mode 100644 week7/youngjun/15649.c create mode 100755 week7/youngjun/15650 create mode 100644 week7/youngjun/15650.c create mode 100755 week7/youngjun/15652 create mode 100644 week7/youngjun/15652.c create mode 100644 week7/youngjun/2580.c create mode 100644 "week7/youngjun/7\354\243\274\354\260\250 \353\260\234\355\221\234 \353\260\261\355\212\270\353\236\230\355\202\271.md" diff --git a/.DS_Store b/.DS_Store index fb155348cc04621b50d34ab52cb12cbabc590fd6..cfac4efb65de8972c5bef2bc12bb99ab310032f3 100644 GIT binary patch delta 255 zcmZoMXfc=|#>B`mu~2NHo+38~0|Nsi1A_nqgW<#|!-*Ff>Omr`4CM@|K$y*7m{Oda zla!yI0~AFPHo`7!j9u6SyRa!XVZ&?&GnhEgVMunGV;8mnx_jdVX|~Pm9Q+(Wk8M2o aoq009h%OJv#UK+JfOxZy$PVU-4J-gZ#yIH! delta 108 zcmZoMXfc=|#>CJzu~2NHo+39B0|Nsi1A_nqgZbp$jE0j9L|C|48Oj+_fiN2=X2>YU zWsy>xoRgHFpToHMBBL4G<_C=8jGNgx_&I>a07bqtPv#fVS5Z-O8-B5%a6nb3nTCmnuC|*LXFJMFuDz!1CMq^f*)*z*jv%Zi|;`2DO zyA>sR5=6=j%zm5s*<`;hI~~Rt@6Ezp#$3jj07Wc0FnlBEM=eOnTFQW2uQ6t~Y{rrx zOCJi+WcZH^;MocG#1x(z`*eOmtOD@81`lzRPMgg)UMg4C)~li_YU0wrQJFs-PG@Ov zI623s6Q$x{IUfe6(I^|Zn};fy4x?l=(FsvFf{=@|C<#^8Q?n#Yb*^t5!V%8Etnh#oVAtXWTX)+`gIH4u$Kt!}?N( zGwvCrkr*HbzA}KlABcF~njiu7hd;yTl2gXE8Sj77+R)plP6i82D2L-T|!LR7L;* literal 0 HcmV?d00001 diff --git a/week1/youngjun/1000.c b/week1/youngjun/1000.c new file mode 100644 index 0000000..6070bd4 --- /dev/null +++ b/week1/youngjun/1000.c @@ -0,0 +1,8 @@ +#include +#include + +int main(){ + int A,B; + scanf("%d %d",&A,&B); + printf("%d",A+B); +} \ No newline at end of file diff --git a/week1/youngjun/1001.c b/week1/youngjun/1001.c new file mode 100644 index 0000000..4bb8aa1 --- /dev/null +++ b/week1/youngjun/1001.c @@ -0,0 +1,8 @@ +#include +#include + +int main(){ + int A,B; + scanf("%d %d",&A,&B); + printf("%d",A-B); +} \ No newline at end of file diff --git a/week1/youngjun/1008.c b/week1/youngjun/1008.c new file mode 100644 index 0000000..7a0c4a2 --- /dev/null +++ b/week1/youngjun/1008.c @@ -0,0 +1,8 @@ +#include +#include + +int main(){ + int A,B; + scanf("%d %d",&A,&B); + printf("%.9lf",(double)A/(double)B); +} \ No newline at end of file diff --git a/week1/youngjun/10172.c b/week1/youngjun/10172.c new file mode 100644 index 0000000..3f8f56f --- /dev/null +++ b/week1/youngjun/10172.c @@ -0,0 +1,10 @@ +#include +#include + +int main(){ + printf("|\\_/|\n"); + printf("|q p| /}\n"); + printf("( 0 )\"\"\"\\ \n"); + printf("|\"^\"` |\n"); + printf("||_/=\\\\__|\n"); +} \ No newline at end of file diff --git a/week1/youngjun/10430.c b/week1/youngjun/10430.c new file mode 100644 index 0000000..f45de80 --- /dev/null +++ b/week1/youngjun/10430.c @@ -0,0 +1,13 @@ +#include +#include + +int main(){ + int A,B,C; + scanf("%d %d %d",&A,&B,&C); + + printf("%d\n",(A+B)%C); + printf("%d\n",((A%C) + (B%C))%C); + printf("%d\n",(A*B)%C); + printf("%d\n",((A%C) * (B%C))%C); + +} \ No newline at end of file diff --git a/week1/youngjun/10869.c b/week1/youngjun/10869.c new file mode 100644 index 0000000..1b6e9a6 --- /dev/null +++ b/week1/youngjun/10869.c @@ -0,0 +1,12 @@ +#include +#include + +int main(){ + int A,B; + scanf("%d %d",&A,&B); + printf("%d\n",A+B); + printf("%d\n",A-B); + printf("%d\n",A*B); + printf("%d\n",A/B); + printf("%d\n",A%B); +} \ No newline at end of file diff --git a/week1/youngjun/10926.c b/week1/youngjun/10926.c new file mode 100644 index 0000000..ac6392a --- /dev/null +++ b/week1/youngjun/10926.c @@ -0,0 +1,9 @@ +#include +#include + +int main(){ + char A[50]; + scanf("%s",A); + printf("%s?",A); + printf("?!"); +} \ No newline at end of file diff --git a/week1/youngjun/10998.c b/week1/youngjun/10998.c new file mode 100644 index 0000000..1ee44ac --- /dev/null +++ b/week1/youngjun/10998.c @@ -0,0 +1,8 @@ +#include +#include + +int main(){ + int A,B; + scanf("%d %d",&A,&B); + printf("%d",A*B); +} \ No newline at end of file diff --git a/week1/youngjun/18108.c b/week1/youngjun/18108.c new file mode 100644 index 0000000..1efca54 --- /dev/null +++ b/week1/youngjun/18108.c @@ -0,0 +1,8 @@ +#include +#include + +int main(){ + int years; + scanf("%d",&years); + printf("%d",years - 543); +} \ No newline at end of file diff --git a/week1/youngjun/25083.c b/week1/youngjun/25083.c new file mode 100644 index 0000000..f33d213 --- /dev/null +++ b/week1/youngjun/25083.c @@ -0,0 +1,11 @@ +#include +#include + +int main(){ + printf(" ,r'\"7 \n"); + printf("r`-_ ,' ,/ \n"); + printf(" \\. \". L_r' \n"); + printf(" `~\\/ \n"); + printf(" | \n"); + printf(" | \n"); +} \ No newline at end of file diff --git a/week1/youngjun/2557.c b/week1/youngjun/2557.c new file mode 100644 index 0000000..1ad36b8 --- /dev/null +++ b/week1/youngjun/2557.c @@ -0,0 +1,5 @@ +#include + +int main(){ + printf("Hello World!"); +} \ No newline at end of file diff --git a/week1/youngjun/2558.c b/week1/youngjun/2558.c new file mode 100644 index 0000000..af2038f --- /dev/null +++ b/week1/youngjun/2558.c @@ -0,0 +1,15 @@ +#include +#include +#include + +int main(){ + int A; + char B[4]; // 널문자 조심 + scanf("%d %s",&A,B); + + printf("%d\n",A * (B[2] - '0')); + printf("%d\n",A * (B[1] - '0')); + printf("%d\n",A * (B[0] - '0')); + printf("%d\n",A * atoi(B)); + +} \ No newline at end of file diff --git a/week1/youngjun/3003.c b/week1/youngjun/3003.c new file mode 100644 index 0000000..1b45bd3 --- /dev/null +++ b/week1/youngjun/3003.c @@ -0,0 +1,14 @@ +#include +#include + +int main(){ + int tot[6] = {1,1,2,2,2,8}; + int sev[6]; + for (int i = 0; i < 6; i++) + { + scanf("%d",&sev[i]); + printf("%d",tot[i] - sev[i]); + printf(" "); + } + +} \ No newline at end of file diff --git a/week2/.DS_Store b/week2/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8fa7e252b1be3ca69627a8015269c10c7e0ad127 GIT binary patch literal 6148 zcmeHKF=_)r43rWV2WecU+%NbCi*a7y517Od2qsqq7wN9byYe*8NFv1C1=6GmBamiS ztJ&kGIGxPQx98)=Y;9%(oM;~mbK^OEW;c~_ARKo*+l!s;_4xL5npH0+$Q|t6M)JP% zAII^xcP!tmtQ3#}Qa}nw0V%Mg0DCWNxJy)&0#ZN1LxU50;glGk4ulv1fGecK zu#Q;**q8wJ!YL6Mm?ssORId@kla73=x?VUXCf&S-53eVCO(-5u$NeqJ&3mGv6p#Yf z3f$&)&Hn!Y|6%^WCTS-Hq`<#Yz*oEdZi`o{-a30Z_SyzNz*+MNr(qowglNaWXvf&F e9p6V$)-|qi-V3M1pd%l2pne9Zi%bgqwE`D+;uXOF literal 0 HcmV?d00001 diff --git a/week3/.DS_Store b/week3/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6f32edc4887b87f07021ce34d3ab4b6ffcd81407 GIT binary patch literal 6148 zcmeHK%}T>S5Z-O8-B5%a6nb3nTCmnuC|*LXFJMFuDz!1CMq^f*)*z*jv%Zi|;`2DO zyA>sR5=6=j%zm5s*<`;hI~~Rt@6Ezp#$3jj07Wc0FnlBEM=eOnTFQW2uQ6t~Y{rrx zOCJi+WcZH^;MocG#1x(z`*eOmtOD@81`lzRPMgg)UMg4C)~li_YU0wrQJFs-PG@Ov zI623s6Q$x{IUfe6(I^|Zn};fy4x?l=(FsvFf{=@|C<#^8Q?n#Yb*^t5!V%8Etnh#oVAtXWTX)+`gIH4u$Kt!}?N( zGwvCrkr*HbzA}KlABcF~njiu7hd;yTl2gXE8Sj77+R)plP6i82D2L-T|!LR7L;* literal 0 HcmV?d00001 diff --git a/week3/youngjun/11729.c b/week3/youngjun/11729.c new file mode 100644 index 0000000..4f34e4a --- /dev/null +++ b/week3/youngjun/11729.c @@ -0,0 +1,33 @@ +//하노이 탑 + +#include +#include + +int Num_Hanoi(int n); +void Hanoi(int n,int start,int to,int finish); + +int main(){ + int n; + scanf("%d",&n); + printf("%d\n",Num_Hanoi(n)); + Hanoi(n,1,2,3); +} + +void Hanoi(int n,int start,int to,int finish){ + if (n==1) + { + printf("%d %d\n",start,finish); + return; + } + Hanoi(n-1,start,finish,to); + printf("%d %d\n",start,finish); + Hanoi(n-1,to,start,finish); + +} + +int Num_Hanoi(int n){ + if(n==1){ + return 1; + } + return 2 * Num_Hanoi(n-1) + 1; +} \ No newline at end of file diff --git a/week3/youngjun/1431.c b/week3/youngjun/1431.c new file mode 100644 index 0000000..faff566 --- /dev/null +++ b/week3/youngjun/1431.c @@ -0,0 +1,103 @@ +//시리얼 번호 + +#include +#include +#include +#define _CRT_SECURE_NO_WARNINGS + +int N; + +void sort(char a[],char b[]){ + char temp[50]; + int num_a,num_b = 0; + char t[50],p[50]; + + if (strlen(a) > strlen(b)) + { + strcpy(temp,a); + strcpy(a,b); + strcpy(b,temp); + } + + if (strlen(a) == strlen(b)) + { + for (int i = 0; i < strlen(a); i++) + { + if (a[i] > '0' && a[i] <= '9') + { + strcpy(&t[i],&a[i]); + num_a += atoi(&t[i]); + } + if (b[i] > '0' && b[i] <= '9') + { + strcpy(&p[i],&b[i]); + num_b += atoi(&p[i]); + } + } + if (num_a > num_b) + { + strcpy(temp,a); + strcpy(a,b); + strcpy(b,temp); + } + else if (num_a == num_b) + { + for (int j = 0; j < strlen(a); j++) + { + if (a[j] > b[j]) + { + strcpy(temp,a); + strcpy(a,b); + strcpy(b,temp); + + break; + } + if (a[j] < b[j]) + { + break; + } + + + } + + } + } + else return; + +} + +int main(){ + scanf("%d\n",&N); + //2차배열 arr 동적할당 + char** arr; + arr = (char**)malloc(sizeof(char*)*N); + for(int i = 0; i < N; i++) + { + arr[i] = (char*) malloc (sizeof(char)*50); + scanf(" %s",arr[i]); + } + // + + for (int n1 = 0; n1 < N-1; n1++) + { + for (int n2 = n1+1; n2 < N; n2++) + { + sort(arr[n1],arr[n2]); + } + + } + + for (int j = 0; j < N; j++) + { + printf("\n%s",arr[j]); + } + + //동적할당 해제 + for (int l = 0; l < N; l++) + { + free(arr[l]); + } + free(arr); + // + return 0; +} \ No newline at end of file diff --git a/week3/youngjun/17478.c b/week3/youngjun/17478.c new file mode 100644 index 0000000..0ea50ef --- /dev/null +++ b/week3/youngjun/17478.c @@ -0,0 +1,59 @@ +//재귀함수가 뭔가요? + +#include + +int N; //지역변수 선언 + +void P(n){ + for (int i = 0; i < n*4; i++) + { + printf("_"); + } +} + +void K(n){ + if (n == 0) + { + return; + } + + for (int i = 0; i < (n-1)*4; i++) + { + printf("_"); + } + printf("라고 답변하였지.\n"); + K(n-1); +} + +void F(n){ + if(n == N){ + P(n); + printf("\"재귀함수가 뭔가요?\"\n"); + P(n); + printf("\"재귀함수는 자기 자신을 호출하는 함수라네\"\n"); + P(n); + printf("라고 답변하였지.\n"); + K(n); + + return; + } + + P(n); + printf("\"재귀함수가 뭔가요?\"\n"); + P(n); + printf("\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n"); + P(n); + printf("마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n"); + P(n); + printf("그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n"); + + F(n+1); +} + +int main(){ + scanf("%d",&N); + printf("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n"); + F(0); + + return 0; +} \ No newline at end of file diff --git a/week3/youngjun/18870.c b/week3/youngjun/18870.c new file mode 100644 index 0000000..c7dbd89 --- /dev/null +++ b/week3/youngjun/18870.c @@ -0,0 +1 @@ +//좌표 압축 \ No newline at end of file diff --git a/week3/youngjun/2447.c b/week3/youngjun/2447.c new file mode 100644 index 0000000..b044d47 --- /dev/null +++ b/week3/youngjun/2447.c @@ -0,0 +1,58 @@ +//별 찍기 + +#include +#include + +char table[6562][6562]; +void origin_star(int y,int x); +void star(int n,int y,int x); + + +int main(){ + int n; + scanf("%d",&n); + memset(table,' ',sizeof(table)); + star(n,0,0); + for (int i = 0; i < n; i++) + { + for (int j = 0; j < n; j++) + { + printf("%c",table[i][j]); + } + printf("\n"); + + } + return 0; +} + +void origin_star(int y,int x){ + table[y][x] = '*'; + table[y][x+1] = '*'; + table[y][x+2] = '*'; + + table[y+1][x] = '*'; + table[y+1][x+2] = '*'; + + table[y+2][x] = '*'; + table[y+2][x+1] = '*'; + table[y+2][x+2] = '*'; +} + +void star(int n,int y,int x){ + + if (n==3) + { + origin_star(y,x); + return; + } + star(n/3,y,x); + star(n/3,y,x+n/3); + star(n/3,y,x+n/3*2); + + star(n/3,y+n/3,x); + star(n/3,y+n/3,x+n/3*2); + + star(n/3,y+n/3*2,x); + star(n/3,y+n/3*2,x+n/3); + star(n/3,y+n/3*2,x+n/3*2); +} \ No newline at end of file diff --git a/week4/.DS_Store b/week4/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6f32edc4887b87f07021ce34d3ab4b6ffcd81407 GIT binary patch literal 6148 zcmeHK%}T>S5Z-O8-B5%a6nb3nTCmnuC|*LXFJMFuDz!1CMq^f*)*z*jv%Zi|;`2DO zyA>sR5=6=j%zm5s*<`;hI~~Rt@6Ezp#$3jj07Wc0FnlBEM=eOnTFQW2uQ6t~Y{rrx zOCJi+WcZH^;MocG#1x(z`*eOmtOD@81`lzRPMgg)UMg4C)~li_YU0wrQJFs-PG@Ov zI623s6Q$x{IUfe6(I^|Zn};fy4x?l=(FsvFf{=@|C<#^8Q?n#Yb*^t5!V%8Etnh#oVAtXWTX)+`gIH4u$Kt!}?N( zGwvCrkr*HbzA}KlABcF~njiu7hd;yTl2gXE8Sj77+R)plP6i82D2L-T|!LR7L;* literal 0 HcmV?d00001 diff --git a/week4/youngjun/1003 b/week4/youngjun/1003 new file mode 100755 index 0000000000000000000000000000000000000000..d75ae53afaf82c79e646f8572b56f0e83c340c93 GIT binary patch literal 33696 zcmeI5U1(fI6vt=tq5X8D){pu@S7_8$%qBK9(KeX0xp=FlEo~|ylwq?U$u^taupe#H zQrNmJ)CODe!Rk{U0>%en7c1r=lpv+?f9~Cz+-%!7ee!?c z%*;76=iHg!%s$S}Pk;Y;>t3Y-^-8Ha=>5=(4N9F?A+(g*3^k!zAMAP6c-uI1K)kCZ zu-d$%C3(g%Q0soT`jcE%*&WEV5ZGvh&nDK4HUGqJQv5s`R@l{I+FaN%*o|iWYb+Kk%zAkC{=Own*(agw5 zCM|6dcb#tADT{8tk9{uxJe;%W>svYhZ|vLuy3xDOJG)ag^Fm&ck7Pm+$>Yz}j+F>E zS%nR^^pqLV5BN`i>wzJ$o zd;NBJo%K2WN@3rNl4lOTKflO#JE77iYgXzREF-Wo7tH7ISS}wQY1z|)c_jy&LF#E# zl7F!XE~vLvZFLq63JH(^36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kih?%z!B5>-8!>a zI`mk7E|u$C*8p7go5sy(-vS2o!?N4~Qvu6ZsC>1ww1mDz^mR&b!?)+ZnHEMG)r^y=C*0m_PVcO@H(IIPsihwF}qGs4*+iX5f2# zq!%eBRk_{yz-&ntFkAUS7BJCxx(9G11!mKj7NffX;{a?%oVGFJB>r3m*ai~!&6IYJ z1O8*;ndrKX>RSnD`vsr)5sgYpdRE3_OR8h1WY~>wWHiQph^n#+g*VpTJzn}NP~LoN zY00`IPOEQPz6XD~0ZzLxZGDGNj=Aw#;-PMVi8>3LsqDkTJixY5HmzxFt7S}K3qHVT z*#aB;_R`hhdAZ4IqsO{_^m19Q>ju}WrRE_tmYR<_W!@=|qil|;bCtR5olhv8i$>Ck>URQKt#$sSph1re>G;Wbw2+VMp?D+~ z&#J~qHX9jJ9f{;XCLM`Jld5YZg3s+~P(}Q;LA{zhg<|eB{{P|Bq_a#ZV!j2-|1Agy zPd-7zZ+`(hQ6Es1!@ovljD)tJXvI6{(*6Uw)n|)uD|8YnBKH28euR*>S3CRr?;No3kz72R z3#TJvnL>K-SRozmjpv5*nbB}0HJHgJ^Ft#zwT0MN_(VKD+#XhKt*tv+qAGkmk_{&^ zDV)GuINKTS7&;M4B}Us?69a?k(T;(gspB0xcg8wfA%p2~e^}z4Z;f=czZh@HsM}ZL Ju2L|le*n0__rd@G literal 0 HcmV?d00001 diff --git a/week4/youngjun/1003.c b/week4/youngjun/1003.c new file mode 100644 index 0000000..a5d5aaf --- /dev/null +++ b/week4/youngjun/1003.c @@ -0,0 +1,80 @@ +//피보나치 수열 + +#include + +int array[41]; + +int fibonacci(int n){ + + if (n == 0) { + return 0; + } + else if (n == 1) { + return 1; + } + for (int i = 2; i <= n; i++) + { + array[i] = array[i-1] + array[i-2]; + } + return array[n]; +} + + +int main(){ + int T; + scanf("%d",&T); + int N_array[T]; + for (int i = 0; i < T; i++) + { + scanf("\n%d",&N_array[i]); + } + array[0] = 0; + array[1] = 1; + + //N_array = (int*)malloc(sizeof(int)*T); + + for (int j = 0; j < T; j++) + { + if (N_array[j] == 0) + { + printf("%d %d\n",1,0); + }else if (N_array[j] == 1){ + printf("%d %d\n",0,1); + }else printf("%d %d\n",fibonacci(N_array[j]-1),fibonacci(N_array[j])); + } + return 0; +} + /*#include + +int num0,num1 = 0; + +int fibonacci(int n) { + if (n == 0) { + num0++; + return 0; + } else if (n == 1) { + num1++; + return 1; + } else return fibonacci(n-1) + fibonacci(n-2); +} + +int main(){ + int T; + scanf("%d",&T); + int N_array[T]; + for (int i = 0; i < T; i++) + { + scanf("\n%d",&N_array[i]); + } + + //N_array = (int*)malloc(sizeof(int)*T); + + for (int j = 0; j < T; j++) + { + num0 = 0; + num1 = 0; + fibonacci(N_array[j]); + printf("%d %d\n",num0,num1); + } + return 0; +}*/ diff --git a/week4/youngjun/12865.c b/week4/youngjun/12865.c new file mode 100644 index 0000000..25ebfa8 --- /dev/null +++ b/week4/youngjun/12865.c @@ -0,0 +1,48 @@ +//평범한 배낭 + +#include +#include +#define Max(a,b) (((a) > (b)) ? (a) : (b)) + +int N,K; + +int take(int things[][]){ + int dp[N+1][K+1]; + for(int i = 0; i < N; i++){ + dp[i][0] = 0; + } + for(int j = 0; j < K; j++){ + dp[0][j] = 0; + } + + for (int m = 0; m <= N; m++) + { + for (int l = 0; l <= K; l++) + { + if (things[m][0] > m) + { + dp[m][l] = dp[m-1][l]; + } + else{ + dp[m][l] = Max(dp[m-1][l], dp[m][l-things[m-1][0]] + things[m-1][1]); + } + } + + } + + return dp[N][K]; + +} +int main(){ + scanf("%d %d",&N,&K); + + int things[N][2]; + + for (int i = 0; i < N; i++) + { + scanf("\n%d %d",&things[i][0],&things[i][1]); + } + + printf("%d",take); + +} \ No newline at end of file diff --git a/week4/youngjun/1932 b/week4/youngjun/1932 new file mode 100755 index 0000000000000000000000000000000000000000..e18e3cf3f02c6cf9eb56ece72ced8a6729e46439 GIT binary patch literal 33432 zcmeI5Yiv|S6vyZGp+#D^*5V^-SVK@T1Qa2HRcVnM2C=0PHX%e9mhHCP^acBf5G`44 zn)G@tkHilo`1-(y8i^8(NsW)RK*VLr(6F$QFKXdPHx7QkDj2}$S zq-SQ%nVECX{N~<%JF}O5{prTdLKx*jh%(4+kdX=@28ACzA?}7qh*GUho6Mc&^IOR} zw-|HPc{TDggo#RRH+O8GJ4LT=oNE)VUI{Y^LefR4c=$lvRnU0-WuCxhV1LV9Kzd=V zUR5EIx^*k1V)4Y@SkdJ5cWAxi?_qaFK`$(*a{b*@^cRZ7qmkZ@qCR)OBd$L%*M;=b zLT6A~luGoz80l?Ok>2(`40z)^?fRoLqC&dYhcn{TbPmTMN^NY~-lU${+Oo|#jYemm z1@7LK-VYLDTMJRDqp#!`{?cC~=IYYutamj*yb27+HaD)qEVM~aTqQ%)EscwGr9yo@ zJ$=2@r{e6>>FYY__$z%UN_pvbv1Iz}`~TeLmM!MS&4qV&%o7*KKb!Kt<_>h&s__lF$dLy_`HqTSP;*)gRywHXT^pUh%2(!S^5AP@?VR6 z(Y}|tI`QJd1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#W|33l&X?-sTruRs@ z@_r{JS!W&A4m_(gQ!j{Ec0I z4B^bkQ2(T~tA9b8F0cPohMFg_;G!JARwj)U)HEW|-UlgV_iwz*P$2zJ93ui9EY{Iu z-8fUyNNZ0ONA19*6K-+TxU7e&5j}8)5{SP3XSC_^>W|i?e1|E+&xtZH>h9+2lHJ%9 zLza0ex2|MXfz)|C!!y+(gxKtA{n+w~V_02;5I8kIFPzN4m|>ae+>RUhd=Af|Q`Dx( z+;W(T0S?!k*?_?X`lxgOI=~APX39DH6wdw~Orf*y*FihPZ1aK~UNlIH>*gbrYN$Bo zJ4|Vxm}!|Kx#fB>y&K>%T(iaV*jYp=9l?lgj#%ae+f3=OQ@Q>5d|taciQu!+Iw$SQ zJIaVP{+h2#upgw1O4~dst?6B7vpv{=Z=r8-5=P;EKmG~xcT(l>Q&9}d;WcNQkZdfn zyR}yN2{aj6E60B*&#otvWzI~P)3n4krxErWm_R5V(M~D{i}TB}K0W^oqQh&^JT0yI z6xQhIr*mH-`Ux}ZILgxgT}QiN%3ee@VNN-tQw?U;cLa&G^csNfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e*_*983V&a;(s-7U8{5aiqP%bhFRPWMF47fufF{ZCLpb;PSl5mNJ zIQWcO)Q(QS3r`nU(47l3exIw;@12vr1cH{jx~xH6s&De>J3aayj~?;p`#t(Wk52bC rP|S2s1D)vt$Sn}MSfnsU+naA3X5kmA1?TW*dJ6PF-#NGc?j-*JDFe(N literal 0 HcmV?d00001 diff --git a/week4/youngjun/1932.c b/week4/youngjun/1932.c new file mode 100644 index 0000000..14f31be --- /dev/null +++ b/week4/youngjun/1932.c @@ -0,0 +1,87 @@ +//정수 삼각형 + +#include +#include +#define Max(a,b) (((a) > (b)) ? (a) : (b)) + +int N; + +int dp(int** wh){ + int sum[N][N]; + sum[0][0] = wh[0][0]; + + for (int i = 1; i < N; i++) + { + for (int j = 0; j <= i; j++) + { + if (j>0) + { + sum[i][j] = sum[i-1][j-1] + wh[i][j]; + } + if (j==0) + { + sum[i][j] = sum[i-1][j] + wh[i][j]; + } + + sum[i][j] = Max(sum[i][j],sum[i-1][j] + wh[i][j]); + } + } + int r = sum[N-1][0]; + for (int k = 1; k < N; k++) + { + r = Max(r,sum[N-1][k]); + } + + return r; +} + +int main(){ + scanf("%d",&N); + + //동적할당 + int** wh; + wh = (int**)malloc(sizeof(int*)*N); + for (int i = 0; i < N; i++) + { + wh[i] = (int*)malloc(sizeof(int)*N); + } + // + + for (int i = 0; i < N; i++) + { + getchar(); + for (int j = 0; j <= i; j++) + { + scanf("%d ",&wh[i][j]); + } + } + + printf("%d",dp(wh)); + + //동적할당 해제 + for (int k = 0; k < N; k++) + { + free(wh[k]); + } + free(wh); + // + + return 0; +} + +/* +int** wh; +wh = (int**)malloc(sizeof(int*)*(N+1)); +for (int i = 0; i < N; i++) +{ + wh[i] = (int*)malloc(sizeof(int)*(N+1)*2); +} +*/ + +/* +for (int k = 0; k <= N; k++) + { + free(wh[k]); + } + free(wh); +*/ \ No newline at end of file diff --git a/week4/youngjun/2156 b/week4/youngjun/2156 new file mode 100755 index 0000000000000000000000000000000000000000..4fd602ab568de9768110669fc5a18a017552f558 GIT binary patch literal 33280 zcmeI5-)kII6vyvmH~nE#H((KefdOf46;rf*u+-XAGkRN1TWx|rKrY+eO|rC2%l^>j zA+TksbQoeOR4Dk;KR{)bKJ=jv5rb);T#BF%d5B=<2)DVEAdiz}|~d>8kI`5ucRVmn^2F3PuNC10jkD&(goR_xAxzl`#MxfQY7B`SNx zWlVYMll)ZHPRrcW$)R^IYqx;P3hYlVIcVj5*Gv?ks z%KITIY~>v>X5wVqHasxjR>WEv3fD)L5?<~5a{oPhd;h_=+~NK4J5uSY3$~T0NvX%a zKaqQLufurhj8c;rH$V?V+a>N<-oFRQDXd?=%FT!2 z8-Vsfx0j2B?Z@*+w`Zr1XJLyx36(lBnY~-@?Ano;t!-=`x%JK2m*5+KI#8uHVzSZB zr55GvOgx9d_9r$3d@GXY@~hTdxyW;+U%3~edKPUs_iI5tN2ZIV+=;>022of3Xt;C> z2FV{(LO$CfTX<1OfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNMJPrW7@l=tG5qp zzxN%SiPXN*o_p7uX=<+=_-?a0=fE+iyIuHW`A6-K%<1Y}N>`VfdfUAA zmJoFvA-~{G;IH>|($`7tj|GVXNl&k<&NO>c=bu0Y+DBYwr0FNmdG7Lp`;(l^Y`lQ$ zf?JmgeYd{bZKlr4F-;`94!as8^d*1O8LSQba=rRzkIvjlY^tr;PGo1?x`!|fe)5bz zRRKfu%R#w+%@uEWMdXUO=2J zYwVglr|WSNvpacVmE>0&@$+nQ1WIzxy(&Qbv8!N$Wap&YImdJBjpci-RzrYDz`uyW z3FPy>yX?7FwBLKt(h^{IHJUpsXK{Vp@osS7zv;_OT;4a%I z&F%>>zBs36%gx|tn*uL_Y^-d5V7LEkxZAg0smb#m@WJ zC^Zy&!gUTlAmD6)9)O;LR&d`yGLy%OrDG+MGh66VCD$(_z+%B7r{%%!urg6f?psBI_Gc)(yn)u!>) zgUd7Fvf6ahe$qgerX2ahIZ{C%g{Cl(? +#define Max(a,b) (((a) > (b)) ? (a) : (b)) + +int gr(int N, int arr[]){ + int dp[N+1]; + + dp[1] = arr[0]; + dp[2] = dp[1] + arr[1]; + + if (N<=2) + { + return dp[N]; + } + else { + for (int i = 0; i <= N; i++) + { + dp[i] = dp[i-3] + arr[i-2] + arr[i-1]; + dp[i] = Max(dp[i],dp[i-2]+arr[i-1]); + dp[i] = Max(dp[i],dp[i-1]); + } + } + + return dp[N]; +} + +int main(){ + int N; + scanf("%d",&N); + + int dt[N]; + for (int i = 0; i < N; i++) + { + scanf("\n%d",&dt[i]); + } + + printf("%d",gr(N,dt)); + + return 0; +} \ No newline at end of file diff --git a/week4/youngjun/2193 b/week4/youngjun/2193 new file mode 100755 index 0000000000000000000000000000000000000000..c42f9508ab229572754ffc302316791c8ac14d23 GIT binary patch literal 33256 zcmeI5&u<$=6vt=d22%BheW(x!kbE&vkP-?x@I!zDU6>Z!RwR`oXf<+dC$W;am4Ap7 zsnQm!g4I%T<;sO~B(5BS2#Pt;Kfnj~fV7p02pY(R-y_tDC z?=yRSJHP$;$6t>t<)oBS6VQz40i~|1EP6^k1=Ubv&dq(`e&T+7R=lI)jG7O%B+gfu zXv~7UxG*}!uFsG9RBTVeEs8B!F{WABY{mwf@p#_bNCy6+@utL1*4kAElxN%cVN9dh zT59aO#^ZhSP89FSct&C;3#Q_DkL|}RHJbHmZDrpc&G-8_9++DZdsyTQhQ*jx?XzmF zY^t^8OBfj6-*y~N&PYV;@fgua^ptb>7HZ7NxrI6N-q|zr(P`wPJQMEYt$ZJ%f>pi| zV^%H=9m6Bzy@0t^^3nR(Qo?KaTpoO9ADue$p?mUF@{M?7`+_YJ#^)-s8MesNP}#?qKg^&0`sy3u7loI$E-XI#<16rGp$=53Bj_BlePOSh+0=_@ zY<^-xz}J&F@|_Qhy!SPzj7bhkJ&!b;2YbPO=C3rGm5u3lr?IcEh2 zkH@y~qL2UykN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)3H<*FoY(&Ex_u|FgUM^C zdDVf^zI%Vqy(g*b8*fd(d16Q3X!XOp@C0tZz2jg?NBg(5UkLS2y;S&%%nb@1-QG#- zcCW9G?`pq?SvN7Ir}y$xQcjCDBki8sm1^3+?Y`;u(_5$*#$xwoQ0TUAJG%6%4vuxK zF(F3kSVxx%UG2l^cJXrG?cUxQ3qY<+30=!dMABd%4-9R_;)V;9Ey=XG{~)^9pq~ExoMxDS}VM zh~T-D@~+0yla4G&JJHSQlHU{7j{cdD{8It#e(KX0AGY&j_WYRr>6k6=lYb}(Pf)UV Xu!}7`6Cb)Ni^Tt#hp~D5o7nya61OJJ literal 0 HcmV?d00001 diff --git a/week4/youngjun/2193.c b/week4/youngjun/2193.c new file mode 100644 index 0000000..81400d1 --- /dev/null +++ b/week4/youngjun/2193.c @@ -0,0 +1,25 @@ +//이친수 + +#include + +int main(){ + int N; + + scanf("%d",&N); + + long int arr[N+1]; + arr[1] = 1; + arr[2] = 1; + + for (int i = 3; i <= N; i++) + { + arr[i] = arr[i-1] + arr[i-2]; + } + + printf("%ld",arr[N]); + + return 0; +} + +//처음 두자리는 10으로 고정 +//10을 제외한 f(n) =>> 3번째 자리가 0일 때, 경우의 수가 f(n-1)/ 3번째 자리가 1일 때, 경우의 수가 f(n-2)이다. 즉, f(n) = f(n-1) + f(n-2), 피보나치 수열과 똑같다. \ No newline at end of file diff --git a/week5/.DS_Store b/week5/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6f32edc4887b87f07021ce34d3ab4b6ffcd81407 GIT binary patch literal 6148 zcmeHK%}T>S5Z-O8-B5%a6nb3nTCmnuC|*LXFJMFuDz!1CMq^f*)*z*jv%Zi|;`2DO zyA>sR5=6=j%zm5s*<`;hI~~Rt@6Ezp#$3jj07Wc0FnlBEM=eOnTFQW2uQ6t~Y{rrx zOCJi+WcZH^;MocG#1x(z`*eOmtOD@81`lzRPMgg)UMg4C)~li_YU0wrQJFs-PG@Ov zI623s6Q$x{IUfe6(I^|Zn};fy4x?l=(FsvFf{=@|C<#^8Q?n#Yb*^t5!V%8Etnh#oVAtXWTX)+`gIH4u$Kt!}?N( zGwvCrkr*HbzA}KlABcF~njiu7hd;yTl2gXE8Sj77+R)plP6i82D2L-T|!LR7L;* literal 0 HcmV?d00001 diff --git "a/week5/youngjun/5\354\243\274\354\260\250 \353\260\234\355\221\234 \353\213\244\354\235\264\353\202\230\353\257\271 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.md" "b/week5/youngjun/5\354\243\274\354\260\250 \353\260\234\355\221\234 \353\213\244\354\235\264\353\202\230\353\257\271 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.md" new file mode 100644 index 0000000..5409eb7 --- /dev/null +++ "b/week5/youngjun/5\354\243\274\354\260\250 \353\260\234\355\221\234 \353\213\244\354\235\264\353\202\230\353\257\271 \355\224\204\353\241\234\352\267\270\353\236\230\353\260\215.md" @@ -0,0 +1,66 @@ +# 5주차 발표: 다이나믹 프로그래밍 + +- 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용 +- 특정한 알고리즘이 아닌 하나의 문제해결법 → 다양한 문제에서 활용가능! + +## 1. 사용하는 이유?? + +- 재귀와 방식 유사 +- 차이점은 재귀의 특징인 불필요한 반복호출을 DP의 저장기능으로 없엠 → 시간복잡도 대폭 줄일 수 있음 +- 따라서 실질적으로 거의 사용되지 않는 재귀에 비해 DP는 많은 프로그래머가 사용한다. + +![스크린샷 2023-02-03 오후 4.42.27.png](5%E1%84%8C%E1%85%AE%E1%84%8E%E1%85%A1%20%E1%84%87%E1%85%A1%E1%86%AF%E1%84%91%E1%85%AD%20%E1%84%83%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%82%E1%85%A1%E1%84%86%E1%85%B5%E1%86%A8%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%84%86%E1%85%B5%E1%86%BC%20b8eb7c6f4afb46769b5f7364d28bfc9f/%25EC%258A%25A4%25ED%2581%25AC%25EB%25A6%25B0%25EC%2583%25B7_2023-02-03_%25EC%2598%25A4%25ED%259B%2584_4.42.27.png) + +## 2. DP 사용 조건 + +- 1. 동일한 부분 문제들이 반복하여 나타나는 경우 +- 2. 부분 문제들의 답이 전체 문제의 답이 되는 경우 + +ex.) 피보나치 수열 + +- f(0)이라는 문제가 3번, f(1)은 5번, f(2)는 3번, f(3)은 2번 반복해서 나타남. +- 전체 문제 f(5)의 답은 f(4)라는 부분문제의 답과 f(3)이라는 부분문제의 답의 합이다. + +→ 피보나치 수열은 DP 사용 가능! + +## 3. DP 사용 방법 + +- 하나의 배열 만들기 → 정답으로 가는 흔적을 보여주는 배열 +- Top-down(재귀함수), Bottom-up(DP) + +ex.) 피보나치 수열 + +![스크린샷 2023-02-03 오후 5.39.47.png](5%E1%84%8C%E1%85%AE%E1%84%8E%E1%85%A1%20%E1%84%87%E1%85%A1%E1%86%AF%E1%84%91%E1%85%AD%20%E1%84%83%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%82%E1%85%A1%E1%84%86%E1%85%B5%E1%86%A8%20%E1%84%91%E1%85%B3%E1%84%85%E1%85%A9%E1%84%80%E1%85%B3%E1%84%85%E1%85%A2%E1%84%86%E1%85%B5%E1%86%BC%20b8eb7c6f4afb46769b5f7364d28bfc9f/%25EC%258A%25A4%25ED%2581%25AC%25EB%25A6%25B0%25EC%2583%25B7_2023-02-03_%25EC%2598%25A4%25ED%259B%2584_5.39.47.png) + +- Top-down + +> fib(0) = 1, fib(1) = 1; +> + +> fib(4) = fib(3) + fib(2); +> + +> fib(3) = fib(2) + fib(1); +> + +> fib(2) = fib(1) + fib(0); +> + +- Bottom-up + +> int sub[]; +> + +> sub[0] = 1, sub[1] = 1; +> + +> sub[2] = sub[0] + sub[1]; +> + +> sub[3] = sub[1] + sub[2]; +> + +> sub[4] = sub[2] + sub[3]; == fib(4) +> + +**T-d는 직관적이지만 스택에 한계가 있으므로 B-u으로 코딩하는 연습 필요!** \ No newline at end of file diff --git a/week6/.DS_Store b/week6/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6f32edc4887b87f07021ce34d3ab4b6ffcd81407 GIT binary patch literal 6148 zcmeHK%}T>S5Z-O8-B5%a6nb3nTCmnuC|*LXFJMFuDz!1CMq^f*)*z*jv%Zi|;`2DO zyA>sR5=6=j%zm5s*<`;hI~~Rt@6Ezp#$3jj07Wc0FnlBEM=eOnTFQW2uQ6t~Y{rrx zOCJi+WcZH^;MocG#1x(z`*eOmtOD@81`lzRPMgg)UMg4C)~li_YU0wrQJFs-PG@Ov zI623s6Q$x{IUfe6(I^|Zn};fy4x?l=(FsvFf{=@|C<#^8Q?n#Yb*^t5!V%8Etnh#oVAtXWTX)+`gIH4u$Kt!}?N( zGwvCrkr*HbzA}KlABcF~njiu7hd;yTl2gXE8Sj77+R)plP6i82D2L-T|!LR7L;* literal 0 HcmV?d00001 diff --git a/week6/youngjun/.DS_Store b/week6/youngjun/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..80b2b3f2e1702082a4ff4b0d18d965df1c173fcc GIT binary patch literal 6148 zcmeHKy-EZz5T5a_Sh2a%GQNPgS6J^IYbgj@h@G4ZUUA1>W1m;>1$-Fs0emFC`B82$ zf`y343?$!Vev<45n`DTHmk)hSG$W!4O^`(?h?tA60}q}8S?4&Vo;tdr%gudZqQ7X8 zy&qCdb2_Ip+S`BK-3{BFZF&A&j@k}wyV?vZc&o>!^~v??%i^oZ{+p4z_5R9Nwt?t_ zfnXpQ2nK?IpJM=bwn%kk7=17h3gv1^i)0igo&_fS|w17P1pw*z^2%^b*22Bq=G$c^JznOV;yMWQa@i)nD zXMVrm%x`}4+1b6#?hm*AyfaS-YmN}23bF(;P%T7W)S@NClMo4U-CdivJMTJ8JIOk` zShLl8Y80mj9bI>i^Uj{xUDWu7**0PHxiFI;B~@HEo#;v%1ywlSt_@fW?CT%VeMqm2 zRhDXz)gFCy-BdcWFEwKd$Lo1b$6IQ8RP@S#`6iy34*A4V>12CntLYGq_qB=lsPU5? zEOZZo#dR~CAGCMI-S*CwgK&i74Vid!kEoCyj-fsJO821`;=0>5@7e5b-PyQX-;D;n z&I5NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e*_F9e#U_q)v9TrIus zDK9hWHBU${Qj&$aU%W1aFQn&Oh4QgdymQiPz9xOABx8|DX`j9<$F5gN>k`z7Vl^F? z6uIt6VIThpE$L^jqVJR+naq_f8T$?czBiriv(@vZADNP|W{UHRw0=Z$!alob$%adI zzCjJwQw4_y=gV#E5qAD@)w6rb&rIh2vV3IkM@pp?)6>&sc#zFRC>xVGCE`aWbYlM_ zo6y2%Lfn-NQpx>cscgQyW3us`Nm*F@vIDRSFf&$K2!k4XFi@4@{|@Tn45&M|XHuI$ zYF}-;Pii4*YMKY5rb674+Br=vR!L3fF09^r-d;wigi!nS=*>Pfr9bx$j`K;iOQ(v? zB>81w(-ATjUi@h*Dle0Lezer8x;a_ZvqySk*yAUpcU^6D`}AmOmFf`bk-1S@=B`c1 zl^3ve(dAd{_+E6oMh`;Kxk6L;&K0mqA^apoLu7s_~ki_VBK zSa$vtnnh=r48AjrRUN_XwB`?$V@NxO;Ak<9CYS&Y%WcMTBg4q+vVP=;XuIU5n(REC z*t}1li`DbDtLN5thSa);%BPU6F%2uzaG92(Ohso&T z+Uecgd%i@cS?z_>bxG9Ib!l~_4KZDpRo7#<*2P6#3fEe7=Jsh=s08aO=ycY7Eou_a zoGYg`9!8w^wQzpcLQ9pIhE{8`+EA0FI5=sWr7=`jo7$Y!&MK8JOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%kz(Xfci-@}*Z4mmWc<|!@ z=G;H5=KtiXW!g39-Czu;Xq<%)2w2M@Z$J(~jzK<$!$pa;?N6omyYXlezqBVyDjkjO zC$rlUZ9g#E(wd1TexBQQAQ} XR8cG3MsU2FhD$VDMdM-L3YzzCMYv}F literal 0 HcmV?d00001 diff --git a/week6/youngjun/10026.c b/week6/youngjun/10026.c new file mode 100644 index 0000000..bffdf2b --- /dev/null +++ b/week6/youngjun/10026.c @@ -0,0 +1,92 @@ +//적록 색약 + +#include +#include +int N; + +void dfs(char area[][N],int x,int y,int visited[][N]){ + visited[x][y] = 1; + + if (x>0) + { + if(area[x-1][y] == area[x][y] && visited[x-1][y] == 0){ + dfs(area,x-1,y,visited); + } + } + if (y>0) + { + if(area[x][y-1] == area[x][y] && visited[x][y-1] == 0){ + dfs(area,x,y-1,visited); + } + } + if (xm`PjO2lt%8cfvb&`fTA;gCkdQ2_ zYx?q7)0j5tfkRDtAYN=@gqqZ(AaRj{5-;|^q5g}zNhLk>P>E8%znR(c_5sEN2M@nV z=g;pqGr#%$J~MB7n)klH`p309g|OxeA?6`3Mm`l1A}eap65>8&2U*IdjW617*spFS zZF#cF#hXfGrw0S2Y__*Imk&|%>&tb*$Q4jihD$0*nMxc=839$$-tZa(1O3H2^ca#$ zbCo6}(z-{NQYKT~yOVROpuP8>*Y+MXBT8~a4Xm7ySyVvxS z>`$}@{v>60=X>p)aoOJ4x*r`ud&9;a?GYuCgEn-JE@>YIkfm(c*t}70-rBfL??%0j zv&21E)A^uGY^#x_+_T@e4Y#zn3S(8O*Yk}eh!^c^DV6(G(xOfW{PJ~C)9)9_;J?44 zV}B>LDd{+MTa{^TZ>dk^=cUe~ukZT#f90jdEq238rL#L0@C$Y+jT>WR$8W0+kq|eE zX9U&LMjnBD05VM@pH>|cB85iK#7B0j*C}zXpmo#2{RBKyn1 zX94QRj7+>ZF##sP1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco% zm;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCh-3t(BiniIhn~-j(c>* z?Vfg9rW`j?aB>yvUKGL;j%$xYs8xb{&T(5N9M3K|vBm09T9Ajs^$aJP?Ik9g86Ef?2tZ=qok5pFwWuypa>4u-<9i8#Ir!!Y9 z4~}|~LSg;v>}(M|!n3EHT-C7`(5l3GYcGUzK`+k!XD@CsGT_BGb6%XjX1vH8oeG2> zK;=cIG>sd>|Cf>F3nTW-IZK7Vp|r4PPa*sd?OTL@6Wc1r|Kvq!GUV`9w6<0!3(W#or+tW0{$!&;|GPnA>22}1Bhp?efjul>j zvanhW&yq?_N;~dP>Uf@=m{(Xtotd$)lbM)u9y^btX1aS|ej;yQCi9+s8Ca4qz0L~f zcHnkh-X1sWPC~-Ejp)R>+p&m~yQe`({Y^@$s)Yn+zQoAFDH`tORF9XX;p9_x7d0v! zH`hi}+@JA?T*65|>yVFadJc^#b2U3Rxc`8f7P$bY$MW{5c6t;}pWdvUrVD#{dqj7P zpyLzM@eEXsmsJM5eq}Kh87+UxM(|jgnVB)mwMU90SkF8#qe?YeJV7qxDs0$QA+1qz z)moA%vU-wBA@$>yAuy;he)?H8isJ8gXuKO4Mo6df_K;qG2%i74$sf|7?ifVJcc#OH zqzrid%3>@sR36gcTu6h;|3QC9LrOKILdx4G^$I7kLfotng9>NvPyAM4@85SFA97VIw9@?M6>^y9*(cT7CyO4!&)Wlf?E$PkxlxCG2CBT> zr#t%4@uTVR$f@8?4)~XhMf&uk8qq_`3EgBUp4Erd(3~Fn6&(|=d%$byD=fH*rai9Q z9XDs8Pf2~n7={_ufKm+>m0(k3}xKOL`z(a@_NHxYUr##s0r2>f<)_3C;+J_`+4??UC-y=s1MF|Uy69|ZdMLbj*fY@J%Ug3dnuYIuP2#P~}IeB)^u$@mHh%bOYsG&|An4AXDNfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)Aj zFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b6f!j`?1{Rx;+mPv- z;`&_xXdsz;|Ej%ImAX*vYK*SGuB3SuULauMW8K!v$On**BY%tzi4<$wn@sJM@n{!5 zX-}GDDjM5MYS|iX-&d~L(;e-K3%MteinT?%ggnsI-kE9@G8v0@w!)|s3qvAJFD$6s zA}S){xkk~@EMDF&ns$iSWJjA!97@ExQwiCYh{h9L;;ndVQtax8V&z0ge1M4|(WA-} zs_a!|A4-_SI}?TvqUe3sgg1O}LcI!s`oaV$4Hr-mACg09Evt7sKwe;EdiMkMFETQH zf1TuNBQG}c5+g4m*{VjV?JZZbezyay_k@w@yXqw4JMvUhQzaXvUw%CxzY~y?0r^Nk zu7phQouKcw +#include +#include + +int T; +int M,N,K; +int X,Y; + +void dfs(int field[][N],int x,int y,int visited[][N]){ //DFS 탐색 + visited[x][y] = 1; + if(x>0) + { + if (field[x-1][y] == 1 && visited[x-1][y] == 0) + { + dfs(field,x-1,y,visited); + } + } + if (x0) + { + if (field[x][y-1] == 1 && visited[x][y-1] == 0) + { + dfs(field,x,y+1,visited); + } + } + if (ym=4eEfZk@Yxe2VYv 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 XG`5OWyb<&ksYta|p#Hz#F|6x9L7jZR literal 0 HcmV?d00001 diff --git a/week6/youngjun/1260.c b/week6/youngjun/1260.c new file mode 100644 index 0000000..20e9002 --- /dev/null +++ b/week6/youngjun/1260.c @@ -0,0 +1,113 @@ +//DFS와 BFS + +#include +#include +#include "QUEUE.h" //c언어는 따로 지원해주는 헤더파일이 없기 때문에 다른 사람의 코드를 헤더파일로 저장했음 +int node; +int line; + +void corr(int graph[][line],int a,int b,int i){ //graph배열을 직관적으로 보이게 정리해주는 재귀함수 + if (!graph[a][i]) + { + graph[a][i] = b; + } + else corr(graph,a,b,i+1); + if (i>0) + { + for (int k = 0; k < i; k++){ + for (int j = k+1; j <= i; j++) + { + if (graph[a][k] > graph[a][j]) + { + int temp = graph[a][k]; + graph[a][k] = graph[a][j]; + graph[a][j] = temp; + } + + } + + } + } + +} + +void dfs(int graph[][line],int v,int visited[]){ //DFS 탐색 + visited[v] = 1; + printf("%d ",v); + for (int i = 0; i < line; i++) + { + if (!visited[graph[v][i]] && !(graph[v][i] == 0)) + { + v = graph[v][i]; + dfs(graph,v,visited); + } + + } + return; + +} + +void bfs(int graph[][line],int v,int visited[]){ + + struct Queue* queue = createQueue(1); + enqueue(queue,v); + printf("%d ",v); + visited[v] = 1; + while (queue -> size) + { + v = dequeue(queue); //먼저 들어온 노드를 꺼낼 수 있음 + for (int i = 0; i < sizeof(graph[v]) / sizeof(int); i++) + { + if (!visited[graph[v][i]] && !(graph[v][i] == 0)) + { + enqueue(queue,graph[v][i]); + printf("%d ",graph[v][i]); + visited[graph[v][i]] = 1; + } + + } + + } + + +} + +int main(){ + int start; + int a,b; + + scanf("%d %d %d",&node,&line,&start); + + int graph[node+1][line]; + for (int i = 0; i < node+1; i++) + { + for (int j = 0; j < line; j++) + { + graph[i][j] = 0; + } + + } + + + for (int i = 0; i < line; i++) + { + getchar(); + scanf("%d %d",&a,&b); + corr(graph,a,b,0); + corr(graph,b,a,0); + } + + int visited[1001] = {0, }; + + printf("\n"); + dfs(graph,start,visited); + printf("\n"); + for (int i = 0; i < 1001; i++) //다시 초기화 => visited배열은 포인터 인자로 넘겨지기 때문에 메모리값이 바뀐다. + { + visited[i] = 0; + } + + bfs(graph,start,visited); + + return 0; +} \ No newline at end of file diff --git a/week6/youngjun/2178 b/week6/youngjun/2178 new file mode 100755 index 0000000000000000000000000000000000000000..0ec6c89f29af7adb02a24f4dbdbd55b04623c11a GIT binary patch literal 33376 zcmeI5U1(fI6vyYbn>MkHyM+phA`zNueMn7hp~Y5{Hdk*yHZ7(BDb#VZyZNB`DEpzQ z5WMX+lFM~#5yd?A!H1wogXSU72a~pBqed;Il!6aNLD)!@JOqiNS^sD5y~*8eQ(Nql zoPl#^&dixJbAB^-_G#{Z_vfz*tA)^33L#cN)LiCF&l!SN$VnC!kRR5BGM1T1p z)fOkMSiP-Aeg{(YIg--sd+ryCZlR~UPo=4t`oXUqF{^Y$A-k$TfdF4^pkEeV2gD6x%)dTnZ3`1FPg@6^1%LEnPS%HLZbYX1BQ9FI zO|DM7I57bxzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60VeSOB+zVFKO32wb%xb9Z>8s~ z=2^oE=MPx=w2>|Q;YA^AVOaVVC|5n@hON&T*~$shD>5_Mj>%yE3DB|iSyX@GucpgO zhTVL{u=RN(8lE$P=f5(>e_UZ`lTc^vz<^StgQ+qDTh+b|cC3&6X@f$&%UOS!Y#lU4}bY-pk}&H{QG#2V7bPtU=}% zESb9u-~Y9^479zk>{(_RZZkgx>8>L2EdOI9%1v=3wE5gf)_IZ8TZ7j+bGh#5CH4NF zym?M-r?a&U|c#Z=pu0b8eZ(2KIybhqP5m-eI8YYogPBq=Zq*ix+5Ce1k_0y zoQm09AH&12$bX2;)+aM#nx#+93>OyHdrDPJ&Af#woH0WO$YHkZn|dJ{5LveJ3zY2I z1}hglzfhkUD}Or115wEKk}HqEDhzDcS!yhT(66i% zE)yKaz+p6}k2sNzVBGx}mpDjN<@8~vVHgcHZUb)D!n1A~_6N#WG(1v#&JE*Wbi1h_ zhi5Ke7VdE~qN+w_-ld7zVR-37?0UZTs&zg8^&f?TMf8rNKj<|f^Y#k%m0?}Rd1du? zs=j5Ps)=AO;dz68C+Iq_?KE09k6y}GKo71Fh3XUvh3ePU(^St>>PaVYb*!p7CaP;8 z>Y6UFiN_$6{5dw15IcmxU1KG5SDg~+bWe9J?%9Ui8@y1-jhjNIql8T5LxfCquNQeh zS%ggYuD0p*;G79C0Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k028>s1ghZf5TqTl3gY`PK+%7+tN-&xJ0(>P!MaYV>OuW9d_X|M$85BH5PTv* zI|X?U4H7BZek_?fCS#EV{?eXmlBr1a7*)&GNJnRJO zLMEe;?p8RJVogAp^udC%uqbO3TVz+ejQ7T)=~P^{$0Mf4Yh?7j1JVPgqmxlk3*qVL^xcIZ8RB~jls)0;_`h?~ zpM)T%qDn9;()X9>ua@X-B|3fb!|#vgN7JQw(MKd6fOvJQOX{JDDj~x{HUjajlq6A- KiqidFCGig@u%ie7 literal 0 HcmV?d00001 diff --git a/week6/youngjun/2178.c b/week6/youngjun/2178.c new file mode 100644 index 0000000..e2e3e4d --- /dev/null +++ b/week6/youngjun/2178.c @@ -0,0 +1,83 @@ +//미로 탐색 + +#include +#include +#include +#define Min(a,b) (((a) < (b)) ? (a) : (b)) + +int N,M; +/* +int bfs(int** maze,int x,int y){ + struct QUEUE* queue = createQueue(N*M); + enqueue(queue,) +}*/ + +int dfs(int maze[][M],int x,int y,int visited[][M],int* num_s){ + if (x == N-1 && y == M-1) + { + *num_s = Min(maze[x][y],*num_s); + } + + visited[x][y] = 1; + if(x>0) + { + if (maze[x-1][y] == 1 && visited[x-1][y] == 0) + { + maze[x-1][y] = maze[x][y] + 1; + dfs(maze,x-1,y,visited,num_s); + } + } + if (x0) + { + if (maze[x][y-1] == 1 && visited[x][y-1] == 0) + { + maze[x][y-1] = maze[x][y] + 1; + dfs(maze,x,y-1,visited,num_s); + } + } + if (yWP8V%8)QpMs|ghY^lg}6XRZPRPh5R%XUjQv|G~Mg%Z=S zbs_fVc1c6}(8QM}MpEAZ8&eH|BE+pp6Z_C;H6-$4+)b+CfrrKr>i^8#ZFd)VnQoFXiEkBa)?Idq` z@s*o*wJ6RsIx4kS?%P}5MUM}a`-Ep#!(9~Wp;R*3l_brS%6REFFc~yWVGdNt_Eh8W zi?mV9Q>jEUbs#bCs*JbyO%v~VuSd}?4hVSh9`GDWMH0!*Sp49;T|VC~FWyqGo$S&= zYfxGcuOpsVm~dr&{a(BpZxGpK^DPYqU8z+3Xe{2WV)2#^ZI|bF){94LPKE5soJ@;( z(z*^pl&asdcZ=G#bH^UDx*@}@xQ>-I?Kcuys~|+FgB=UAym!0}=&MV}jQ1=-{EKTq zzVf_^y-=qs@+xT}wKOlXiGO>0N1SvjW}ZgZ&-B6^ie8FQEP8Jj4b%(Y)AoiP@5=fH zLraLUioDWhP`?MC;*`c(hnWyJn$IYzwVpi+dmn5X_5?|f5D%jcey+QUCD3<4N=xzk z!tcO6%QWH?_iSmWM_|-I=pAcPiOw}`u>)(GkF_{W*`_bfZ~W=p<*CzG ztcLGjgRchSgXqYX$s5cyVC@On?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5 zU;<2l2`~X6nr!DUJ2Ml?$y7KPO|6P?o zLxywN&Q`CNqy?zuBAw>SAD?epX_|6!iXysls!q;YSvv5E-Zv3P*03M z(l}*1kB`H1t;FN5gJ-ji-pJ&28iWWJQH#7qmO~-FtuG6K7iPwMj+`p=%+1Z^u8BH%)5@NMfhf`WD3iA9A4ftH)1IBH zCP&_I<&8QyW1XV2mCzkIQ=mbvoY2#nC~U*DJlCXlO%|Sp%T3LI)e2+-R#m86dCSgR z4eh_uvf5g4f?^13MaZmw&rBMo?N%S5?7`oWv$oSc?xe0dO=CHEfqJ9)Pn__hsY1PG z)I8MRjfy!||7uj4`8YZbqlScn^SUDkLD$-5UgI_n+mXc@uvQ!VIe#ymNYvvqT|r@; z_!71@i(xX|!@^sH<7mst0m?4ZJ>a*pn@s0ny@dv<>a*7!IZ8>mAwSlTJd=(b$#jnj ztM54sbLD8AylQ2a=@29E(t$=-j?~F9t52`=A8;V&kGGnfBaH~Ccf?3$Q?JiDvC_1! zy|cZ1$DB6(9=o%jH)*qhcGDCbIporNf#O+|4e3#tgt3>Y!Lts=J5t zU!$S$K1SqZzX{W?Iqrs$lYPe3M-a2GzyQDHTj<^NY4>~l`Y>;=qfVi(@bki6?$@sV z!dJAHnYny9on?-E`3Q?IapfB*sxp{}D6#Y~`<@ri$dNZAk#kpWDO*pqrg=~COIG^jo zc~=^(%e-RDVA?o>X^MkWv1uAZHGbE0OnA^$025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C z0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(^x`$nJ!k#<4aAoL&LrI!PkbN_In z&~+olqV*td0|*s8W}FWf2>4b(wnILFv_iTdbk%}VDv=CF4yj1%A=MI&wUv7grox@g zLPf%DZ5aiJhwfgm2v*wI&yr2;n~eRc*Bk z*as`@jtcu|g-z>5=>;H*A#}+E{r5Zhv1)g1gIm;KN$%tch+w8ssuHZqV7;Hq`ai;F BqXGZ` literal 0 HcmV?d00001 diff --git a/week6/youngjun/2589.c b/week6/youngjun/2589.c new file mode 100644 index 0000000..9c1adb3 --- /dev/null +++ b/week6/youngjun/2589.c @@ -0,0 +1,151 @@ +//보물섬 + +#include +#include + +struct Node{ + int x; + int y; + int cnt; + struct Node *next; +}; + +char **map; +int **visit; + +int search_map(struct Node* head, int n, int m); + +int main(void){ + int n, m; + int cnt = 0, max = 0; + struct Node * head; + struct Node * new_node; + + scanf("%d %d", &n, &m); + map = (char**)malloc(n*sizeof(char*)); + visit = (int**)calloc(n, sizeof(int*)); + for(int i=0; inext = new_node; + new_node -> x = i; + new_node -> y = j; + new_node -> cnt = 0; + new_node -> next = NULL; + + cnt = search_map(head, n, m); + + if(cnt > max){ + max = cnt; + } + } + } + printf("%d\n", max); +} + +int search_map(struct Node* head, int n, int m){ + int max = 0; + int x[4] = {1, -1, 0, 0}; + int y[4] = {0, 0, 1, -1}; + int X, Y; + struct Node *temp, *new, *use; + temp = head; + temp = temp->next; + use = temp; + visit[temp->x][temp->y] = 1; + + while(head -> next != NULL){ + temp = head->next; + if(temp == NULL) + break; + for(int i=0; i<4; i++){ + X = temp->x + x[i]; + Y = temp->y + y[i]; + if(X < 0 || X >= n || Y <0 || Y >= m){ + continue; + } + if(visit[X][Y] == 1 || map[X][Y] == 'W'){ + continue; + } + + visit[X][Y] = 1; + new = (struct Node*)malloc(1*sizeof(struct Node)); + new->x = X; + new->y = Y; + new->cnt = temp->cnt + 1; + new->next = NULL; + use->next = new; + use = use->next; + if(new->cnt > max) + max = new->cnt; + + } + + if(temp->next == NULL) + break; + head->next = temp->next; + free(temp); + } + + for(int i=0; i +#include +#include "QUEUE.h" + +int M,N; + +int bfs(char map[][N],char visited[][N],int x, int y){ + struct QUEUE* queue = createQueue(M*N); + enqueue(queue,) + visited[x][y] = 1; +} + +int main(){ + scanf("%d %d",&M,&N); + char map[M][N]; + for (int i = 0; i < M; i++) + { + getchar(); + for (int j = 0; j < N; j++) + { + scanf("%c",&map[i][j]); + } + } + int visited[M][N]; + for (int i = 0; i < M; i++) + { + for (int j = 0; j < N; j++) + { + visited[i][j] = 0; + } + } + for (int i = 0; i < M; i++) + { + for (int j = 0; j < N; j++) + { + if (map[i][j] == 'L' && visited[i][j] == 0) + { + bfs(); + } + } + } + +} +*/ \ No newline at end of file diff --git "a/week6/youngjun/6\354\243\274\354\260\250 \353\260\234\355\221\234 DFS, BFS.md" "b/week6/youngjun/6\354\243\274\354\260\250 \353\260\234\355\221\234 DFS, BFS.md" new file mode 100644 index 0000000..a26076e --- /dev/null +++ "b/week6/youngjun/6\354\243\274\354\260\250 \353\260\234\355\221\234 DFS, BFS.md" @@ -0,0 +1,71 @@ +# 6주차 발표 : DFS, BFS + +- 깊이 우선 탐색(DFS, Depth-First Search) +- 너비 우선 탐색(BFS, Breadth-First Search) + +## 1. 정의 + +### 1.1 DFS(Depth-First Search) + +- 깊이 우선 탐색이라고 부르며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘. +- 스택 자료구조 혹은 재귀함수를 이용 + +> DFS 장점 +> +- 현재 경로상의 노드들만 기억하면 되므로 저장 공간의 수요가 비교적 적음 +- 목표 노드가 깊은 단계에 있는 경우 해를 빨리 구할 수 있음 +- BFS 보다 구현이 간단함 + +> DFS 단점 +> +- 단순 검색 속도가 BFS 보다 느림 +- 해가 없는 경우에 빠질 수 있음. 따라서 사전에 탐색할 임의의 깊이를 지정할 필요가 있다. +- DFS는 해를 구하면 탐색이 종료된다. 따라서 구한 해가 최적의 해가 아닐 수 있다. + +> 형태(c언어) +> + +![스크린샷 2023-02-10 오후 3.00.32.png](6%E1%84%8C%E1%85%AE%E1%84%8E%E1%85%A1%20%E1%84%87%E1%85%A1%E1%86%AF%E1%84%91%E1%85%AD%20DFS,%20BFS%2016d8900e3af547f595886ede779d549e/%25EC%258A%25A4%25ED%2581%25AC%25EB%25A6%25B0%25EC%2583%25B7_2023-02-10_%25EC%2598%25A4%25ED%259B%2584_3.00.32.png) + +### 1.2 BFS(Breadth-First Search) + +- 너비 우선 탐색이라고 부르며 그래프에서 가까운 노드부터 우선적으로 탐색하는 알고리즘. +- 큐 자료구조를 이용 + +> BFS 의 장점 +> +- 노드의 수가 적고 깊이가 얕은 경우 빠르게 탐색할 수 있다. +- 단순 검색 속도가 DFS 보다 빠르다. +- 너비를 우선 탐색하므로 답이 되는 경로가 여러개여도 최단경로를 보장한다. + +> BFS의 단점 +> +- 큐에 다음에 탐색할 정점들을 저장해야 하므로 이에 따른 저장공간이 많이 필요하다. +- 노드의 수가 많아지면 탐색할 노드 또한 많아져 시간이 오래 걸린다. + +> 형태(c언어, c언어는 큐함수를 따로 지원을 안해서 직접 작성해야함 유의) +> + +![스크린샷 2023-02-07 오후 6.48.11.png](6%E1%84%8C%E1%85%AE%E1%84%8E%E1%85%A1%20%E1%84%87%E1%85%A1%E1%86%AF%E1%84%91%E1%85%AD%20DFS,%20BFS%2016d8900e3af547f595886ede779d549e/%25EC%258A%25A4%25ED%2581%25AC%25EB%25A6%25B0%25EC%2583%25B7_2023-02-07_%25EC%2598%25A4%25ED%259B%2584_6.48.11.png) + +## 2. 문제에서의 선택 + +1) 그래프의 모든 정점을 방문하는 것이 핵심인 문제 + +DFS,BFS 중 상관없음. 편한거 사용하면 됌. + +2) 경로의 특징을 저장해둬야 하는 문제 + +예를 들면 각 정점에 숫자가 적혀있고 a부터 b까지 가는 경로를 구하는데 경로에 같은 숫자가 있으면 안 된다는 문제 등, 각각의 경로마다 특징을 저장해둬야 할 때는 DFS를 사용한다. + +3) 최단경로를 구해야 하는 문제 + +미로 찾기 등 최단거리를 구해야 할 경우, DFS도 가능하긴 하지만 BFS가 더 유리하다. + +왜냐하면 DFS로 경로를 검색할 경우 처음으로 발견되는 해답이 최단거리가 아닐 수 있지만, **BFS로 경로를 탐색 시 먼저 찾아지는 해답이 곧 최단거리이기 때문이다. + +4) 그래프 규모 + +BFS는 저장공간이 많이 필요하므로 그래프의 규모가 크다면 DFS를 우선적으로 고려, + +그래프 규모가 작으면 BFS를 우선으로 고려한다. \ No newline at end of file diff --git a/week6/youngjun/QUEUE.h b/week6/youngjun/QUEUE.h new file mode 100644 index 0000000..9f52fb5 --- /dev/null +++ b/week6/youngjun/QUEUE.h @@ -0,0 +1,69 @@ + +#include +#include +#include + + +struct Queue { // 큐 형태 + int front, rear, size; + unsigned capacity; + int* array; +}; + +struct Queue* createQueue(unsigned capacity) //큐 생성 +{ + struct Queue* queue = (struct Queue*)malloc( + sizeof(struct Queue)); + queue->capacity = capacity; + queue->front = queue->size = 0; + queue->rear = capacity - 1; + queue->array = (int*)malloc( + queue->capacity * sizeof(int)); + return queue; +} + +int isFull(struct Queue* queue) //큐가 꽉 찼으면 참 반환! +{ + return (queue->size == queue->capacity); +} + +int isEmpty(struct Queue* queue) //큐가 비었으면 참 반환! +{ + return (queue->size == 0); +} + +void enqueue(struct Queue* queue, int item) //큐 맨뒤에 노드 추가하고 프린트! +{ + if (isFull(queue)) + return; + queue->rear = (queue->rear + 1) + % queue->capacity; + queue->array[queue->rear] = item; + queue->size = queue->size + 1; + //printf("%d ", item); +} + +int dequeue(struct Queue* queue) //큐 맨앞에있는 노드 삭제하고 리턴! +{ + if (isEmpty(queue)) + return INT_MIN; + int item = queue->array[queue->front]; + queue->front = (queue->front + 1) + % queue->capacity; + queue->size = queue->size - 1; + return item; +} + +int front(struct Queue* queue) +{ + if (isEmpty(queue)) + return INT_MIN; + return queue->array[queue->front]; +} + +int rear(struct Queue* queue) +{ + if (isEmpty(queue)) + return INT_MIN; + return queue->array[queue->rear]; +} diff --git a/week7/.DS_Store b/week7/.DS_Store index 9dd9c34fb4b44e96eb2374071edd2ecfe8bc94f8..833a89d5309f7070829a9ad43580f620737ff90d 100644 GIT binary patch delta 346 zcmZoMXfc=|#>B)qu~2NHo}wr-0|Nsi1A_nqLpnniLn%XEQh9N~#*NDv>p?Oc43!M| zAW>x5q@4UDpxln6f}G6a5(9&4j7-cdtZeKY>>S)2vB4Sn<-sM1C8fnqiAB*MUPyj^ zP7;irm=uc5>*V=91M}+;N;+p z7m%o~HZ?WXQ82PJsnt=awlp%(Q7|z!tF7ha5LMQ<4vNpt$<52}0y+)|7=hjb170W% zqq-;d$S8t17``hDF3QWv&r1i&F>c)WjAb)B2R{cetTt}^&ODi4L{|i)3uJ5qga+HN MIYeXw^TY-g08>C!djJ3c delta 101 zcmZoMXfc=|#>CJzu~2NHo}wrt0|NsP3otOGGh{K8GUTNcC+AEoRA*$I%*ZUl0pca) y=jUuzV1CZB*?_r%X)`+qKL=3%W<}=j%#-;=bU8sr8~|d5$u>OFn`1=axB0b}m6^Vx)+&!%#i=&kP$CZC*x27`?bipMIC9iI zjVX7Z9{1i}>J=5XA*j}~Io~ndFyEb6>&TQFZ!9IeJO<*Ex*AZoF7X(t^wb60ktw(H z>hkuibs|=ZxpUIqC|~DJRQ@|Jt>d{&CYSXx_T~#AUYNY>T>y+bxiOYGzg+))dhGC# zN9}`$UHVF0?Aa%5kzFR4Do)Gz{Gejg*UpNP2!Ik~ou2z!v!qRO-kd*nZ2x>klow zbn|P!8T_E}@oxCSP?QAOhQT&x?9^cG>Hi_T&i!qbML_S z@#n(2UJL3udZt)PW`-XbMqTqWZs2|BB!BCoQnLU1jV-(=BtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsK2|0ZxeTK&gmdtJ)7Y`5KR&Fxxlw<=xDUX3nq+wl{nCamCc7_as& z+wxo!6AeskG7}Psr4x1|cwS!ZHa|iWjX#dyz^8|mTH1HP3Z6geIuRK7d&ep7`pnA3 z0~ntE%XHLw51vMC;6lH>UbWZ7K+Mm(rdOTmwW_^lqJQP4R9)XGcbvZOgt`*B-)UFv zw)xH{kNC@QztgJPttKj!eJ@?Ks&=FK`Bxho#~`>Zc_4}Lkd4eM z%`J}A9+Lg6)a;e2eXVA%P1r4O;o6XmZ(KDCTSGQ>cC}_-t=jdPeQhG}7>WumyJ@af z1Cuaoc6}nS$LFtC1A{P6T?+0{a=y`})o}IfdbQlH9$#BJ+r|-m8+Blt>%e(3io+a` zx7n&Gubhqhfa`|CEgyBXu=;MeYwC}EaKHG^e^uY9*{!|rnZwSzYjGbwJA_qRmYNpk z&h2#Eh?iTiA~Rj_s}g@R)->{8g5(fJF3z*-OP8%0Dt^~`TdHg9+5lG1JMvj03_H5? zr|_vuso~&`b6BFh{f5k)jxJBW4{vmNG>#9yp&D<&G8esulV0BTDExA#pT$Ju1!vZ| z|2P)RK450|N|Lw)jQ(v3!_yaWJO2#NTJ)WIpA45LlURc{%M5RYpm`fjL* zzn6oNH}7~K?C9^z`*N}6ZS7V>hMZ^^-t$`(sz^S(h^;vBcx&sJY)F6vNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCT<01n{o}C?r4vBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmy+Y0%6oJ4SgEg54E741iS(IJA22WO-fB& zcS@Yq2i*?c2}92&OYyl_LFs&9K3hsDU5v-FDJR0xY75pX70{VEom@=D%cZ2AOU4q( zf(pddp^SPetJ0-pETanjsy$ z&&+%K`H````gV(r>!m90`Z2K)KmAMBe#qF*7<&pfzAK-0B) zu+m?1A9XzD-8~HRO2_5S>5N=7oskAV&Q-n9m5&@RCJV(#Hg+ag&dxqt&PEOFJu zd?c2h%@yWLa~WMMl@n)rZM~38o*s+1Z6{cb>=_^5I~-S$=VFCODwoD@O)*j!kBrSN zB+{w;$gb4PY&JhOGn#&GY;-g+z6&y&jU0 +#define minus(x, y) (((x) > (y)) ? (x-y) : (y-x)) + +int n, cap[20][20]; +int team[20]; // 스타트 팀와 링크 팀을 구분 짓기 위한 배열 +//int index = 0; // team 배열의 index +int min = 100; + +void calculate() { + int a1 = 0, b1 = 0; // 1이 스타트 팀일 때 + int a2 = 0, b2 = 0; // 0이 스타트 팀일 때 + + for (int i = 0; i < n; i++) + { + for (int j = 0; j < n; j++) + { + if (i == j) + continue; + if (team[i] == 1 && team[j] == 1) { + a1 += cap[i][j]; + a2 += cap[j][i]; + } + if (team[i] == 0 && team[j] == 0) { + b1 += cap[i][j]; + b2 += cap[j][i]; + } + } + } + + int gap1 = minus(a1, b1); + int gap2 = minus(a2, b2); + + if (gap1 < min) + min = gap1; + if (gap2 < min) + min = gap2; +} +void comb(int depth, int isChoose, int cnt) { + + if (isChoose == 1) + team[depth] = 1; + else + team[depth] = 0; + + if (depth - cnt == n / 2) + return; + else { + if (depth == n - 1 || cnt == n / 2) { + calculate(); + return; + } + } + + // O를 고르면 + comb(depth + 1, 1, cnt + 1); + // X를 고르면 + comb(depth + 1, 0, cnt); + + return; +} + +int main() { + scanf("%d", &n); + for (int i = 0; i < n; i++) + { + getchar(); + for (int j = 0; j < n; j++) + { + scanf("%d", &cap[i][j]); + } + } + comb(0, 1, 1); + + printf("%d", min); +} + + + +/* +#include +int N; +int num = 0; + +int team(int sol[N/2],int arr[][N]){ + +} + +int BT(int k,int sol[N/2],int visited[N+1],int p,int arr[][N]){ + if (k == N/2 && team(sol,arr) < num) + { + num = team(sol,arr); + return; + } + for (int i = 1; i <= N; i++) + { + if (!visited[i] && (p < i)) + { + sol[k] = i; + visited[i] = 1; + BT(k+1,sol,visited,i,arr); + visited[i] = 0; + } + + } +} + +int main(){ + scanf("%d",&N); + int sol[N/2]; + int arr[N][N]; + for (int i = 0; i < N; i++) + { + getchar(); + for (int j = 0; j < N; j++) + { + scanf("%d ",&arr[i][j]); + } + } + int visited[N+1]; + for (int i = 0; i <= N; i++) + { + visited[i] = 0; + } + + + +} +*/ \ No newline at end of file diff --git a/week7/youngjun/15649 b/week7/youngjun/15649 new file mode 100755 index 0000000000000000000000000000000000000000..5112669c0cd839be79a0b61cd966464231ebb121 GIT binary patch literal 33336 zcmeI5U1%It6vywhTl?KjK}GRvg~nRJ)@m#jTTN;Qr?p9nNk9wXvfbSzOPkHQAJ|q4 zTh>6vArwJD(T6_v!H3YNJV~U1jVOqa2cKjs5jIdE4;6~UuK#mqCY@c|C-v=r;M{x9 zx#ym}=Qp#DckYjW{(fhpQr3E<)H>)+=+&4~lPZCcQjbC%sMaTY-n38IZ}*G0RjgL? zo|fd9LZH@z_B(^EA!dDdt4{^?2DnABB_mpwGUrNxfv!DY{xFJxf0q;k5j$LK95Gcf zeb8uKER|0e*Ie!SK7HNK_ec;C+TnstLB0pp@}-KULN+(LX1CV+b&zjcFfVpgf^Dz4 zv@Yk~&*suPn;V&cw|#%JK|Xm#B4W4a@Mrv1p2O!*t&jE$_UJeI`v&}{(e2k6a&PbD z{SXzl9Z;=DCnAsGzWJU-tdVYiePAi!6@4zP`wFAbSK9U!nUZ02Ut(*WniwCS$jMm5 zuhSo!w&Lg86mdm)nRhWVclZ52ajfqx`{=Ro-JNUO7xIc643bHnXs#|)BHW~&8FViN z_6%%!cCyU8W0#cLg7E_SJo>HBlhCMy{|V{uCs(k3^F1baz?Xo^`?s%LEbKd*J-sh| z{%jhy$YW61$F6JrPaofT;N43%-rMoP@Haoa2wwtfL6zE$!FDqi{>tiF{~S6~pV$yQ z_lo4nzh=y}Mt=7oROWnCyHSR9cQ4q_!1-b+Grsr8UhFG-+F$w%I>~>#qLe(lJ%O!I zCxrw^fCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c{tba4$NkNz-b}a`R~@&!;6D^99+$?KZJ ziaJ8E;(K%mtA5nHom9y4_$+3F{`EQdakq=6*$>Y*tWpOn+c-cUWr zyy`wU70%aUa(r8P7gwt_%ki*vZ>Z6D9{D2?2vEz?;CIXp>dPNXM0Gwfd_DfuQKf?V z^NzRS6XbI|<+%3knte-Fp^7KPIsJ0B2c27+#8PD z+i8xP-UHp7~PuRHJAw_N)x zRQ;t%gG{}*omUp(lX95V!;E`#_NE{m}v{9Eur0_I@1Z!&a^pu`#5|e z(H^gjIrH9yUi7oze7TI}tnN0f>@cfggvWVRM+Mj+9TizGy*by5K4xrH@jJF8KmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J{}+J-63ZRq@;L~(Q{4X+ z00xlg9piFmcPM7ufm__WLyy1C!UqH_T-I$JhvuOb%xg$$>`bwAMyHbnTxTzyVkwzA zBW^vC%${xajFyvyw9@%PHdh)^x|mAlpxaHq;F7XLt`}drSjnXBL42{TL=TRG2TI}IAJJV(hf7y + +//k==M일 때를 기점으로 BT함수가 계속 리턴되면서 백트래킹 하는 흐름을 생각해보기 +int N,M; + +void BT(int k,int arr[M],int visited[N+1]){ + if (k == M) + { + printf("\n"); + for (int i = 0; i < M; i++) + { + printf("%d ",arr[i]); + } + return; + } + for (int i = 1; i <= N; i++) + { + if (!visited[i]) + { + arr[k] = i; + visited[i] = 1; + BT(k+1,arr,visited); + visited[i] = 0; //백트래킹하면서 i를 다시 사용할 수 있도록 설정 + } + + } +} + +int main(){ + scanf("%d %d",&N,&M); + int arr[M]; + int visited[N+1]; + for (int i = 0; i <= N; i++) + { + visited[i] = 0; + } + BT(0,arr,visited); + + return 0; +} \ No newline at end of file diff --git a/week7/youngjun/15650 b/week7/youngjun/15650 new file mode 100755 index 0000000000000000000000000000000000000000..2f910bb5fe676e724dda028f557fa1832969f62a GIT binary patch literal 33336 zcmeI5Pi$009LML;MgF@r(L{rWy;S}jplBr+KwIR+hq9%SHZde*Tz0o*g>IYfF48K= z>RRo~vw@?D#^A+Z2*`X!7Ip0r$c>4Qtye;rG((TU=EG4|c`_jCwh8OB$%eq2C(hRRlY^{?c!^0z4 zX^Z%I`fXDd{dlWGU1474w-_2*{{0_1*!!}5;9%poJKM4@#1+{c1d}-7SY60OxJf=U zsGbh&8Q8LSGR^$P-d1WY+H_ z9N&=|Kb3+lvJool`0R_VU;fqG`OD0qiK9cOw|)N<`eINEs?-KFHkh{XS5{ZsHdH1* zu_4&^qQrUaIb$vr^4;A~8S_zXMjF=gTCkoYDhCSXbt_KlMpe68}z7DcQTN zfvu1yg#<`|1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPqmF=no_3SF#GQQjNW^wcETTU`w z^}41o<9D3C#Ec(M!L>ANxpsA-T(8#`K7eo8uE^<3&#oZI7C*>2IoXULH3X@Y_D-qj zWUukLvB$1Nr{Sc$flBa|Mfc&UhHp6{r?r)LcCl2p91odz12r#RscppPLQe2e3sT^- zWT#$@xLyHU&bfD?7JWZBQ!Z^epSvD2+s$kkei+kOF4~I{ z8z*dw5=&}xt`~L0*m7!_LINZ}0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JB=CO{h#|PVF)nuu$eZH+T>xl6!f%Yro81jD?RLE4-reZ&=UKQwz`|qQ)=SV) zXc6NYl00!Tmp`dfi7`B9FFm<@B6(7}^Rps_w?Uh# zz9o^aPnN9k_TM=d8>veiX&RBY w&cimaG}*^m>~xDQ{AD?EPlT+cVXq4Hp{Zg@1BZ?)-3yfe#Gwt2|867x2B77z+yDRo literal 0 HcmV?d00001 diff --git a/week7/youngjun/15650.c b/week7/youngjun/15650.c new file mode 100644 index 0000000..4901018 --- /dev/null +++ b/week7/youngjun/15650.c @@ -0,0 +1,42 @@ +//N과 M (2) + +#include + +int N,M; + +void BT(int k,int arr[M],int visited[N+1],int p){ + if (k == M) + { + printf("\n"); + for (int i = 0; i < M; i++) + { + printf("%d ",arr[i]); + } + return; + } + for (int i = 1; i <= N; i++) + { + if (!visited[i] && (p < i)) //잘 생각해보기 //visited배열 없어도 풀어진다?? + { + arr[k] = i; + visited[i] = 1; + BT(k+1,arr,visited,i); + visited[i] = 0; + } + + } +} + +int main(){ + scanf("%d %d",&N,&M); + int arr[M]; + + int visited[N+1]; + for (int i = 0; i <= N; i++) + { + visited[i] = 0; + } + BT(0,arr,visited,0); + + return 0; +} \ No newline at end of file diff --git a/week7/youngjun/15652 b/week7/youngjun/15652 new file mode 100755 index 0000000000000000000000000000000000000000..8baa6a1f8ff92212d31a5c92f0f74002af7ab528 GIT binary patch literal 33336 zcmeI5PiP!f9LL`@TU*oCT|q%n?0QIRJ)~Bnq|`r~+QF%sw3q~|P#&AzO}cHe3E5pu zp@GqDAj42vFXF9Ugwl&Wc<~^lG?3gBFJ3%ESY-oIa_AwJ(DnO!Gn3A4+nZkG`-9*7 z-tYH&@3-%L-t6(s`|-}7cXuddbtt8_K_7=+ODHv`(r795G}M7=eX{Qz`(yiq6B2C| ztJQs=Cw1o0QR^Z5)KF^|Gd|NAQ=z{dVNp!Uh}M#NUhm3VLA|HK9+4jn*csM)WUF4TT$wJG#?GE$e$3^xa zE?QShpB77bT`Y}GBGEp-@4|YrMi5`riBh{_%nL>|@8HcXy#}UZ^Y58y1r~@mf7tiExwk+<f}L z`SCn_k!PSX59hhby)*U0-+%e}wL9N@IDhqJ#L`d;s?;7d_L#QtS5{BQi!f$=;zO|S zuGCq<|1U1`yS-4!1*rC88P>hIU_OKA%ay`J_t9?5t2h#j-UlP~H(aG;?+%2%!a6A= zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JB=CPCFzk50JGHg6H@oS0)pc)p&9^t5 zOMB{lN*%G1bAwo{bLov)ocp|?8fRga?1ljF?FPF25Olk=U%L7Bx|8c~_&xI&(I1TH zg+bTag5}wb)um>$xq1qHm+U$c$kb8fLQv$g9EJAnwIg;tc{wfZ;d)qe(|cmxpWUo2 zS&m;_N4#-NDxr^*FvaVu-y-DH7SpG1jdmyZUX-M|60R@f_}ibyFFL+*JbPowzAafy z^SUvw{+$u;$-l&S!^?*j8gr8H?PW9IC&&BE@%kIi&6RD9k0euDNIJEZb?3k$IwAcB z%B~#x+54q&{cf`v)fY(KqHo{!>|Zg1tEMK(_HQ_cmy>gHkkv=VTRVNLAx?5vv+FEu zvuoTuKQYf4JUdlaJ}ugnH|K7jMNA}a&3Rg!x5ZgwqhAQnur23wcVlGAj5cA}fKXCy z;H2E(Om50G=XzDjO$0sMs3$E6kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011%5e?uURvU10`+yO3kipM?-V0?s($erDhn05-cxM!kBFwVjU1T0+EZM_Sf zg1X3SNbbzJa^;-PXQy$Uy+q2DZ0?+d^=P&@-WnOJW~cK?PfZs~l~JY3xol}P{2fcH z&JN{Xz*LV8sqOvhr2+Mto;afmGlg8WQqX4#*?eJIy*`n}?_?6n#WxKS>LQ-B##4&ATx08rkKLmM3b-bVZbWg>12 literal 0 HcmV?d00001 diff --git a/week7/youngjun/15652.c b/week7/youngjun/15652.c new file mode 100644 index 0000000..1edeab3 --- /dev/null +++ b/week7/youngjun/15652.c @@ -0,0 +1,34 @@ +//N과 M(4) + +#include +int N,M; + +void BT(int k,int arr[M],int p){ + if (k == M) + { + printf("\n"); + for (int i = 0; i < M; i++) + { + printf("%d ",arr[i]); + } + return; + } + for (int i = 1; i <= N; i++) + { + if (p <= i) + { + arr[k] = i; + BT(k+1,arr,i); + } + } + +} + +int main(){ + scanf("%d %d",&N,&M); + int arr[M]; + + BT(0,arr,0); + + return 0; +} \ No newline at end of file diff --git a/week7/youngjun/2580.c b/week7/youngjun/2580.c new file mode 100644 index 0000000..e69de29 diff --git "a/week7/youngjun/7\354\243\274\354\260\250 \353\260\234\355\221\234 \353\260\261\355\212\270\353\236\230\355\202\271.md" "b/week7/youngjun/7\354\243\274\354\260\250 \353\260\234\355\221\234 \353\260\261\355\212\270\353\236\230\355\202\271.md" new file mode 100644 index 0000000..6087855 --- /dev/null +++ "b/week7/youngjun/7\354\243\274\354\260\250 \353\260\234\355\221\234 \353\260\261\355\212\270\353\236\230\355\202\271.md" @@ -0,0 +1,38 @@ +# 7주차 발표 : 백트래킹 + +## 1. 정의 + +백트래킹이란 해를 찾는 도중 해가 아니어서 막히면, 되돌아가서 다시 해를 찾아가는 기법 + +![Untitled](7%E1%84%8C%E1%85%AE%E1%84%8E%E1%85%A1%20%E1%84%87%E1%85%A1%E1%86%AF%E1%84%91%E1%85%AD%20%E1%84%87%E1%85%A2%E1%86%A8%E1%84%90%E1%85%B3%E1%84%85%E1%85%A2%E1%84%8F%E1%85%B5%E1%86%BC%200d211495e984430b9c066c88793ad07a/Untitled.png) + +- 재귀함수를 사용한다는 것에서 DFS와 비슷함. +- DFS는 가능한 모든 경로를 탐색하지만 백트래킹은 특정한 조건을 만족하는 경우만 살펴봄. ⇒ 효율성 좋음 + +**즉, 답이 될 만한지 판단하고 그렇지 않으면 그 부분까지 탐색하는 것을 하지 않고 가지치기 하는 것이 백트래킹!** + +## 2. 용어 + +### 2.1 유망성 + +- 해(정답)가 될 수 있는 노드를 유망하다고 함. +- 유망하지 않는 노드의 이전 노드으로 돌아가 ****다음 자식 노드로 이동한다. + +--- + +### 2.2 가지치기 + +- 조건에 어긋나서(유망하지 않아서) 그 경로로 갈 시도를 하지 않는 것 +- 즉, 유망하지 않는 노드에 가지 않는 것을 가지치기라고 한다. + +![Untitled](7%E1%84%8C%E1%85%AE%E1%84%8E%E1%85%A1%20%E1%84%87%E1%85%A1%E1%86%AF%E1%84%91%E1%85%AD%20%E1%84%87%E1%85%A2%E1%86%A8%E1%84%90%E1%85%B3%E1%84%85%E1%85%A2%E1%84%8F%E1%85%B5%E1%86%BC%200d211495e984430b9c066c88793ad07a/Untitled%201.png) + +## 3. 문제 풀이 + +> DFS 등으로 모든 경우의 수를 탐색하는 과정에서, 조건문 등을 걸어 답이 절대로 될 수 없는 상황을 정의하고, 그러한 상황일 경우에는 탐색을 중지시킨 뒤 그 이전으로 돌아가서 다시 다른 경우를 탐색하게끔 구현하는게 일반적. +> +- 보통 DFS만 써서 푸는 문제는 없기 때문에 백트래킹을 DFS의 문제버전이라고 생각하면 좋다. + +//형태(c언어) + +![스크린샷 2023-02-17 오후 2.52.09.png](7%E1%84%8C%E1%85%AE%E1%84%8E%E1%85%A1%20%E1%84%87%E1%85%A1%E1%86%AF%E1%84%91%E1%85%AD%20%E1%84%87%E1%85%A2%E1%86%A8%E1%84%90%E1%85%B3%E1%84%85%E1%85%A2%E1%84%8F%E1%85%B5%E1%86%BC%200d211495e984430b9c066c88793ad07a/%25EC%258A%25A4%25ED%2581%25AC%25EB%25A6%25B0%25EC%2583%25B7_2023-02-17_%25EC%2598%25A4%25ED%259B%2584_2.52.09.png) \ No newline at end of file diff --git a/week8/.DS_Store b/week8/.DS_Store index 9dd9c34fb4b44e96eb2374071edd2ecfe8bc94f8..930685dba01b28b8f205723937fe79b1a1d50683 100644 GIT binary patch delta 93 zcmZoMXfc=|&e%S&P;8=}B0m!Y0|O%ig8&0V217nW{=_)l$p#`UQXCA$45bWt4CxSI thP;&G