삐까냥의 파도타기

3304. 최장 공통 부분 수열 본문

코딩/SW Expert Academy

3304. 최장 공통 부분 수열

금손형아 2018. 3. 27. 17:30

최장 공통 부분 수열 개념을 코딩으로 짜면 됩니다.

 2018년 3월 27일


import java.util.Scanner;


public class Q3304 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int testCase = sc.nextInt();


for (int i = 1; i <= testCase; i++) {

int result = 0;


String firstString = sc.next();

String secondString = sc.next();

int[][] resultArray = new int[secondString.length()+1][firstString.length()+1];

for (int j = 0; j < secondString.length(); j++) {

for (int k = 0; k < firstString.length(); k++) {

if (secondString.charAt(j) == firstString.charAt(k)) {

int value = resultArray[j][k]+1;

resultArray[j+1][k+1] = value;

if (result < value) {

result = value;

}

} else {

int left = resultArray[j+1][k];

int up = resultArray[j][k+1];

resultArray[j+1][k+1] = Math.max(left, up);

}

}

}

System.out.println("#" + i + " " + result);

// 출력

// System.out.print("    ");

// for (int k = 0; k < firstString.length(); k++) {

// System.out.print(firstChars[k] + " ");

// }

// System.out.println();

// for (int j = 0; j <= secondString.length(); j++) {

// if (j == 0) {

// System.out.print("  ");

// } else {

// System.out.print(secondChars[j-1] + " ");

// }

// for (int k = 0; k <= firstString.length(); k++) {

// System.out.print(resultArray[j][k] + " ");

// }

// System.out.println();

// }

}

}

}



'코딩 > SW Expert Academy' 카테고리의 다른 글

1949. 등산로 조성  (0) 2018.04.13
1767. 프로세서 연결하기  (0) 2018.04.12
2948. 문자열 교집합  (0) 2018.03.27
3975. 승률 비교하기  (0) 2018.03.27
2814. 최장 경로  (0) 2018.03.27