문제 보기
https://www.acmicpc.net/problem/1958
풀이
https://mountain-noroo.tistory.com/30
예전에 LCS 문제를 푼 적이 있다.
이번엔 그 3차원 배열 버전이다.
문제를 푸는 방법은 동일하기 때문에 위 포스팅을 보고 오면 될 것 같다.
전체 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str1 = br.readLine();
String str2 = br.readLine();
String str3 = br.readLine();
int[][][] dp = new int[str1.length()+1][str2.length()+1][str3.length()+1];
for(int i = 0; i <= str1.length(); i++) {
for(int j = 0; j <= str2.length(); j++) {
for(int k = 0; k <= str3.length(); k++) {
if(i == 0 || j == 0 || k == 0) {
dp[i][j][k] = 0;
continue;
}
if(str1.charAt(i - 1) == str2.charAt(j - 1) && str1.charAt(i - 1) == str3.charAt(k - 1)) {
dp[i][j][k] = dp[i-1][j-1][k-1] + 1;
} else {
dp[i][j][k] = Math.max(dp[i-1][j][k], Math.max(dp[i][j-1][k], dp[i][j][k-1]));
}
}
}
}
bw.write(dp[str1.length()][str2.length()][str3.length()] + "");
bw.flush();
bw.close();
}
}
GitHub 링크
'ProblemSolve > 항해99 코테스터디' 카테고리의 다른 글
99클럽 코테 스터디 35일차 TIL (미들러): [백준][Java] 주사위 윷놀이 - 골드2 (0) | 2024.12.01 |
---|---|
99클럽 코테 스터디 33일차 TIL (미들러): [프로그래머스][Java] 신규 아이디 추천 - level 1 (1) | 2024.11.29 |
99클럽 코테 스터디 32일차 TIL (미들러): [백준][Java] 11054 가장 긴 바이토닉 부분 수열 - 골드4 (0) | 2024.11.28 |
99클럽 코테 스터디 31일차 TIL (미들러): [백준][Java] 2631 줄세우기 - 골드4 (0) | 2024.11.27 |
99클럽 코테 스터디 30일차 TIL (미들러): [백준][Java] 1965 상자넣기 - 실버2 (0) | 2024.11.26 |