[BaekJoon] 9251 LCS (Java)

SeongWon Ohยท2021๋…„ 10์›” 8์ผ
0
post-thumbnail

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

https://www.acmicpc.net/problem/9251


๐Ÿ“ ๋ฌธ์ œ ํ’€์ด ๋ฐฉ๋ฒ•

๋ฌธ์ œ๋Š” ๋‘ ๋ฌธ์ž์—ด์˜ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด ์ค‘์—์„œ ๊ฐ€์žฅ ๊ธธ์ด๊ฐ€ ๊ธด ์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.

ํ•ด๋‹น ๋ฌธ์ œ ์ด์ „ ๋ฌธ์ œ์™€ ๋™์ผํ•˜๊ฒŒ Dynamic Programming์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

๋ฌธ์ œ ํ’€์ด๋Š” ๋‹ค์Œ ํ‘œ์™€ ๊ฐ™์€ ์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.
1. 2๊ฐœ์˜ ์ˆ˜์—ด์˜ ๋ฌธ์ž๋“ค์„ ํ†ตํ•ด 2์ฐจ์› ๋ฐฐ์—ด(dp)์„ ์ƒ์„ฑํ•œ๋‹ค.
2. ๋ฌธ์ž์—ด B์— ์žˆ๋Š” ๋ฌธ์ž๊ฐ€ ๋ฌธ์ž์—ด A์— ์žˆ๋Š”์ง€ ์ž๋ฆฌ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฒดํฌํ•˜๋ฉฐ 2์ค‘ for๋ฌธ์„ ๋Œ๊ฒŒ๋œ๋‹ค.
3. ๋งŒ์•ฝ ๊ฐ™์€ ๋ฌธ์ž๊ฐ€ ํ™•์ธ๋œ๋‹ค๋ฉด ๋ฐฐ์—ด์—์„œ ํ•ด๋‹น ๊ทธ ๋ฌธ์ž๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€ ๊ฐ€์žฅ ํฌ๊ธฐ๊ฐ€ ํฐ ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.
4. 3์—์„œ ์ฐพ์€ ๊ฐ€์žฅ ํฐ ์ˆ˜+1์ด ํ˜„์žฌ ๊ทธ ๋ฌธ์ž์˜ ์œ„์น˜์— ์ €์žฅ๋œ ๊ฐ’๋ณด๋‹ค ๋” ํฌ๋‹ค๋ฉด ๊ฐ’์„ ์—…๋ฐ์ดํŠธ ํ•ด์ค€๋‹ค.


๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป ์ž‘์„ฑํ•œ ์ฝ”๋“œ

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



public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		
		char[] strArr1 = br.readLine().toCharArray();
		char[] strArr2 = br.readLine().toCharArray();
		
		int[][] dp = new int[strArr2.length+1][strArr1.length];
		
		for (int i=0; i< strArr1.length; i++) {
			dp[0][i] = 0;
		}
		

		for (int i=0; i<strArr2.length ; i++) {
			int max = 0;
			for (int j=0; j<strArr1.length; j++) {
				dp[i+1][j] = dp[i][j];
				if (strArr2[i] == strArr1[j]) {
					for (int k=0; k< j; k++) {
						if (dp[i][k] > max) max = dp[i][k];
					}
					
					dp[i+1][j] = dp[i+1][j] < max+1 ? max+1: dp[i+1][j];
				}
			}
		}
		
        	// ์ตœ์ข… ๊ฒฐ๊ณผ(max๊ฐ’) ๋„์ถœ
		int max = 0;
		for (int j=0; j<strArr1.length; j++) {
			if (dp[strArr2.length][j] > max) max = dp[strArr2.length][j];
		}
		
		System.out.println(max);
	}

}

profile
๋ธ”๋กœ๊ทธ ์ด์ „ํ–ˆ์Šต๋‹ˆ๋‹ค. -> https://seongwon.dev/

0๊ฐœ์˜ ๋Œ“๊ธ€