백준 9251 LCS (Java,자바)

jonghyukLee·2021년 9월 5일
0

이번에 풀어본 문제는
백준 9251번 LCS 입니다.

📕 문제 링크

❗️코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    static int [][] dp;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String tmp1 = br.readLine();
        String tmp2 = br.readLine();

        String [] fst = tmp1.split("");
        String [] sec = tmp2.split("");
        dp = new int[fst.length+1][sec.length+1];

        for(int i = 1; i < dp.length; ++i)
        {
            for(int j = 1; j < dp[0].length; ++j)
            {
                if(fst[i-1].equals(sec[j-1])) dp[i][j] = dp[i-1][j-1] + 1;
                else dp[i][j] = Math.max(dp[i-1][j],dp[i][j-1]);
            }
        }
        System.out.print(dp[fst.length][sec.length]);
    }
}

📝 풀이

LCS(Longest Common Subsequence, 최장 공통 부분 수열)을 찾는 문제인데, 두 문자열을 비교하는 간단한 문제이다 보니 dp를 활용한 풀이법을 이해하면 가볍게 넘어갈 수 있습니다.

📜 후기

이번 문제는 예전에 유튜브에서 dp풀이법을 봤어서 쉽게 풀이할 수 있었습니다!

profile
머무르지 않기!

0개의 댓글