1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [G5_9251] LCS

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


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

        char[] str1 = br.readLine().toCharArray();
        char[] str2 = br.readLine().toCharArray();

        int length_1 = str1.length;
        int length_2 = str2.length;


        // ๋ฉ”๋ชจ๋ฆฌ์ œ์ด์…˜ ํ•  ๋ฐฐ์—ด, ๊ณต์ง‘ํ•ฉ ํ‘œํ˜„์„ ์œ„ํ•ด 1๊ฐœ์”ฉ ์ถ”๊ฐ€
        int[][] dp = new int[length_1+1][length_2+1];

        for(int i=1; i<=length_1; i++){
            for(int j=1; j<=length_2; j++){

                // i-1 ๊ณผ j-1 ์˜ ๋ฌธ์ž๊ฐ€ ๊ฐ™๋‹ค๋ฉด
                if(str1[i-1] == str2[j-1]){
                    // ๋Œ€๊ฐ์„  ์œ„ (i-1, j-1)์˜ dp ์— +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.println(dp[length_1][length_2]);
    }
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

DP์˜ LCS ๋ฌธ์ œ์ด๋‹ค.
LCS ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ์ฒ˜์Œ ์ ‘ํ•ด๋ด์„œ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๊ฒฐ๊ตญ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ดค๋‹ค.
์„ค๋ช…์„ ๋„ˆ๋ฌด ๊น”๋”ํ•˜๊ฒŒ ํ•ด๋‘์…”์„œ ์ดํ•ด๊ฐ€ ์ž˜ ๋˜์—ˆ๋‹ค. ์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๋œ๋‹ค๋ฉด ํ•œ ๋ฒˆ ์ฝ์–ด๋ณด๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๋ฐ”๋กœ๋Š” ๋จผ์ € ๋‘ ๋ฐฐ์—ด์˜ ํ‘œ๋ฅผ ๋งŒ๋“ค์–ด ๊ฒน์น˜๋ฉด ์ˆ˜๋ฅผ ๋”ํ•ด ํ‘œ ( dp ๋ฐฐ์—ด์— ) ๋ฅผ ์ฑ„์›Œ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด๋‹ค.
์—ฌ๊ธฐ์„œ ์ด์ œ ๋ฐฑํŠธ๋ž˜ํ‚น ํ˜•์‹์œผ๋กœ ํ•˜๋ฉด ๋ฌธ์ž๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์™ผ์ชฝ ๋Œ€๊ฐ์„ ์— ์žˆ๋Š” ๊ฐ’์— +1์„ ํ•ด์ฃผ๊ณ , ์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ์™ผ์ชฝ๊ฐ’๊ณผ ์˜ค๋ฅธ์ชฝ ๊ฐ’์ค‘ ํฐ ๊ฐ’์„ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ทœ์น™์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๊ฒƒ์€ bottom-up ๋ฐฉ๋ฒ•์ด๋‹ค. top-bottom์€ ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  bottom-up์€ for๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„๋ณต์žก๋„๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ถ€๋ถ„์—์„œ bottom-up์˜ ์„ฑ๋Šฅ์ด ๋” ์ข‹๋‹ค.
ํ•ด๋‹ต์„ ๋ณด๊ณ  ์ดํ•ดํ•˜๋ฉด ์‰ฝ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฌธ์ œ๋“ค๋„ ๋งŽ์ด ํ’€์–ด๋ด์•ผ ๊ฒ ๋‹ค.





๐Ÿ‘ ์ฐธ์กฐ
https://st-lab.tistory.com/139

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: