코딩 공부 연습

백준 9251 LCS

miffy짱 2022. 12. 24. 18:01
반응형

백준 9251 LCS


오늘은 대표적인 LCS 문제를 풀어보았다. 예전에 해본적이 있었는데 가물가물해서 시간이 좀 걸렸다.


LCS 의 경우 2차원 배열을 만들어 점화식을 직접 만들어보면 된다.
  • 두 문자열에서 참조하고 있는 부분이 같은 경우
    • table[i][j] = table[i-1][j-1] + 1
  • 서로 다른 경우
    • max(table[i-1][j], table[i][j-1]);
public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s1, s2;
        s1 = scanner.nextLine();
        s2 = scanner.nextLine();
        int table[][] = new int[1002][1002];

        for (int i = 1; i <= s1.length(); i++) {
            for (int j = 1; j <= s2.length(); j++) {
                if (s1.charAt(i-1) == s2.charAt(j-1)) {
                    table[i][j] = table[i - 1][j - 1] + 1;
                } else {
                    table[i][j] = Integer.max(table[i-1][j], table[i][j-1]);
                }
            }
        }
        System.out.println(table[s1.length()][s2.length()]);
    }