๐ ๋ฌธ์
1958๋ฒ: LCS 3
์ฒซ ์ค์๋ ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด์ด, ๋์งธ ์ค์๋ ๋ ๋ฒ์งธ ๋ฌธ์์ด์ด, ์ ์งธ ์ค์๋ ์ธ ๋ฒ์งธ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๊ฐ ๋ฌธ์์ด์ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ๊ธธ์ด๋ 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
www.acmicpc.net
๐ ์์ด๋์ด
์ฒ์์๋ a, b๋ฅผ ๋น๊ตํด์ lcs ๋ฌธ์์ด์ ๊ตฌํ๊ณ c์ ๋น๊ตํ๋ ํ์์ผ๋ก ๊ตฌํ๋๋ ํ๋ ธ๋ค.
ํด๋น ๋ฐฉ๋ฒ์ ์ต๋ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ abc ๋ชจ๋์ ๋ํด์ ์ต๋๊ฐ์ผ๋ก ํ์ ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด(๋ฐ๋ก)
a: abcdeqfpk
b: qfpkabcde
c: qpk
์ ๊ฐ์ ๊ฒฝ์ฐ a,b์ ๋ํด์ bcdef์ด์ง๋ง abc์ ์ฒด์ ๋ํด์๋ qpk์ด๋ค. ๋ฐ๋ผ์ abc์ ๋ํด์ ํญ์ ์ต์ฅ ๊ณตํต ๋ฌธ์์ด์ด ์๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ abc๋ชจ๋์ ๋ํด์ 3์ฐจ์ ๋ฐฐ์ด๋ก ๊ณ์ฐํด์ผ ํ๋ค.
abcdeqfpk
qfpkabcde
qpk
๋ฐ๋ก ๊ณ์ฐํ ๊ฒฝ์ฐ : (ab)c -> 0
๊ฐ์ด ๊ณ์ฐ ํ ๊ฒฝ์ฐ : abc -> 3
3์ฐจ์ ๋ฐฐ์ด์ ์ด์ฉํ ํ์ด๋ ๊ธฐ์กด์ 2์ฐจ์ ๋ฐฐ์ด๊ณผ ๋์ผํ๋ค
x-1, y-1, z-1์ค ์ต๋๊ฐ์ ์ทจํ๊ณ ๋ง์ฝ a[i]==b[j]==c[k]๋ผ๋ฉด ๋ชจ๋์ ๋ํด์ ์ผ์นํ๋ ๊ฒฝ์ฐ์ด๋ฏ๋ก +1ํด ์ฃผ๋ฉด ๋๋ค.
๐ ํ์ด
package ๋ฐฑ์ค.dynamicProgramming.lcs;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class boj_1958_lcs3 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] aStr = br.readLine().toCharArray();
char[] bStr = br.readLine().toCharArray();
char[] cStr = br.readLine().toCharArray();
int[][][] dp = new int[aStr.length + 1][bStr.length + 1][cStr.length + 1];
for (int i = 1; i <= aStr.length; i++) {
for (int j = 1; j <= bStr.length; j++) {
for (int k = 1; k <= cStr.length; k++) {
dp[i][j][k] = Math.max(Math.max(dp[i - 1][j][k], dp[i][j - 1][k]), dp[i][j][k - 1]);
if (aStr[i - 1] == bStr[j - 1] && bStr[j - 1] == cStr[k - 1]) {
dp[i][j][k] = Math.max(dp[i][j][k], dp[i - 1][j - 1][k - 1] + 1);
}
}
}
}
System.out.println(dp[aStr.length][bStr.length][cStr.length]);
}
}

'๋ฐฑ์ค(boj)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [JAVA]14676 ์์ฐ๋ ์ฌ๊ธฐ๊พผ? ์์์ ๋ ฌ ๊ณจ๋3 (0) | 2023.06.15 |
|---|---|
| [JAVA]17299 ์ค๋ฑํฐ์(๊ณจ๋3, ์คํ) (0) | 2023.06.12 |
| [JAVA]4803 ํธ๋ฆฌ, ๋ถ๋ฆฌ ์งํฉ (0) | 2023.06.03 |
| [JAVA]2240 ์๋๋๋ฌด, ๊ณจ๋ 5, dp (0) | 2023.06.02 |
| [JAVA]2847 ๊ฒ์์ ๋ง๋ ๋์ค์ด, ๊ทธ๋ฆฌ๋, ์ค๋ฒ4 (0) | 2023.06.01 |