티스토리 뷰
728x90
반응형
문제 요약
- 알고리즘 분류: dp
- 난이도: Gold5
- 문제내용:
- 두 문자열에서 가장 긴 수열 길이를 구하여라
- 사이트: https://www.acmicpc.net/problem/9251
문제풀이
이번 문제에는 동적계획법 알고리즘 대표적인 문제인 LCS이다. LCS에 대한 개념은 아래 사이트에서 확인해보면 된다.
https://jih3508.tistory.com/191
위에 대한 내용 개념을 제대로 알면 문제 푸는데는 지장 없을거라고 생각한다.
Code
Python
X = input()
Y = input()
xLenth = len(X)
yLenth = len(Y)
dp = [[0] * (yLenth + 1) for _ in range(xLenth + 1)]
for i in range(1, xLenth + 1):
for j in range(1, yLenth + 1):
if X[i - 1] == Y[j - 1]:
dp[i][j] = dp[i - 1][j - 1] + 1
else:
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])
print(dp[xLenth][yLenth])
Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] X = br.readLine().toCharArray();
char[] Y = br.readLine().toCharArray();
int xLegth = X.length;
int yLegth = Y.length;
int[][] dp = new int[xLegth + 1][yLegth + 1];
Arrays.stream(dp).forEach(array -> Arrays.setAll(array, x -> 0));
for(int i = 1; i <= xLegth; i++) {
for(int j = 1; j <= yLegth; j++) {
if(X[i - 1] == Y[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.println(dp[xLegth][yLegth]);
}
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[BAEKJOON]1182 부분수열의 합 (0) | 2024.02.16 |
---|---|
[BAEKJOON]10819 차이를 최대로 (0) | 2024.02.16 |
[BAEKJOON]14606 피자 (Small) (0) | 2024.02.01 |
[BAEKJOON]2193 이친수 (2) | 2024.01.29 |
[BAEKJOON]21736 헌내기는 친구가 필요해 (4) | 2024.01.13 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 알고리즘
- 자바
- java
- BaekJoon
- 누적합
- spring-boot
- level2
- 파이썬
- 그래프
- 동적계획법
- BFS
- DP
- JSCODE
- 수학
- LeetCode
- 백준
- 그리디
- 문자열
- Programmerse
- Python
- Greedy
- 배열
- 구현
- 동적 계획법
- DFS
- 이론
- 넓이 우선 탐색
- 재귀호출
- 백트레킹
- 조합
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함