top of page

소스 코드 제출

공개·회원 69명

250805

//#include<stdio.h>

//

//int memo[51][51][51] = {0};

//

//int w(int a, int b, int c);

//

//int main() {

// int a,b,c, temp;

//

// scanf("%d %d %d", &a, &b, &c);

//

// while (a!=-1 || b!=-1 || c!=-1) {

//

// temp = w(a,b,c);

// printf("w(%d, %d, %d) = %d\n", a,b,c,temp);

// scanf("%d %d %d", &a, &b, &c);

// }

//

// return 0;

//

//}

//

//

//

//int w(int a, int b, int c) {

// int v, d,e,f,g;

// // int res;

//

// if (a<=0 || b<=0 || c<=0) {

// return 1;

// }

//

//

//

// if (memo[a][b][c]!=0) {

// //printf("v:%d abc: %d %d %d\n",v,a,b,c);

// return memo[a][b][c];

// }

//

// else if (a>20 || b>20 || c>20) {

//

// memo[a][b][c] = w(20,20,20);

//

// return memo[a][b][c];

// }

//

// else if (a<b && b<c) {

//

//

// memo[a][b][c-1] = w(a,b,c-1);

// memo[a][b-1][c-1] = w(a,b-1,c-1);

// memo[a][b-1][c] = w(a,b-1,c);

//

// memo[a][b][c] = memo[a][b][c-1] + memo[a][b-1][c-1] - memo[a][b-1][c];

// return memo[a][b][c];

//

// }

//

// else {

// memo[a-1][b][c] = w(a-1, b, c);

// memo[a-1][b-1][c] = w(a-1, b-1, c);

// memo[a-1][b][c-1] = w(a-1, b, c-1);

// memo[a-1][b-1][c-1] = w(a-1, b-1, c-1);

// // printf("m: %d\n", memo[d] + memo[e] + memo[f] + memo[g]);

// memo[a][b][c] = memo[a-1][b][c] + memo[a-1][b-1][c] + memo[a-1][b][c-1] - memo[a-1][b-1][c-1];

// return memo[a][b][c];

//

// }

//}

//



#include<stdio.h>

#include<string.h>


int max(int a, int b);


int main() {


int dp[101][101] = {{0}};

int maxI, maxJ,i , j, lcsLen, lcsIdx=0;

char strA[1001] = {0}, strB[1001] = {0}, lcs[1000]={0};


scanf("%s", strA);

getchar();

scanf("%s", strB);

maxI = strlen(strA);

maxJ = strlen(strB);

// printf("%s", strA);

// printf("%c \n", strA[1]);

for (i=0; i<=maxI; i++) {

for (j=0; j<=maxJ; j++) {

if (strA[j]==strB[i]) {

// printf("working %d %d \n", i,j);

dp[i+1][j+1] = dp[i][j]+1;

}

else {

dp[i+1][j+1] = max(dp[i][j+1], dp[i+1][j]);

}

}

}

lcsLen = dp[maxI][maxJ];

if (lcsLen!=0) {

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

for (j=1; j<=maxI; j++) {

if (dp[j][i]==lcsIdx+1) {

lcs[lcsIdx] = strA[i-1];

lcsIdx++;

}

}


}

printf("%d\n",lcsLen);

printf("%s", lcs);


}

else {

printf("%d",lcsLen);


}

// for (i=0; i<=maxI; i++) {

// for (j=0; j<=maxJ; j++) {

// printf("%d ", dp[i][j]);

// }

// printf("\n");

// }








return 0;

}




int max(int a, int b) {


if (a>b) {

return a;

}

else {

return b;

}




}

8회 조회
주소 : 경기도 용인시 광교중앙로 302 블루 스퀘어 602호
연락처 : 031) 216 - 1546 ,     031) 215 - 1546
사업자등록번호 : 465-92-00916
​학원 등록 제 4603호
bottom of page