Skip to content

Commit 184847b

Browse files
committed
[Gold IV] Title: LCS 3, Time: 44 ms, Memory: 87824 KB -BaekjoonHub
1 parent f9f0ef3 commit 184847b

2 files changed

Lines changed: 69 additions & 0 deletions

File tree

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import Foundation
2+
3+
let A = readLine()!
4+
let B = readLine()!
5+
let C = readLine()!
6+
7+
let n = A.count
8+
let m = B.count
9+
let p = C.count
10+
11+
let a = Array(A)
12+
let b = Array(B)
13+
let c = Array(C)
14+
15+
var dp = Array(
16+
repeating: Array(
17+
repeating: Array(repeating: 0, count: p + 1),
18+
count: m + 1
19+
),
20+
count: n + 1
21+
)
22+
23+
for i in 1...n {
24+
for j in 1...m {
25+
for k in 1...p {
26+
if a[i - 1] == b[j - 1] && b[j - 1] == c[k - 1] {
27+
dp[i][j][k] = dp[i - 1][j - 1][k - 1] + 1
28+
} else {
29+
dp[i][j][k] = max(
30+
dp[i - 1][j][k],
31+
dp[i][j - 1][k],
32+
dp[i][j][k - 1]
33+
)
34+
}
35+
}
36+
}
37+
}
38+
39+
print(dp[n][m][p])
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# [Gold IV] LCS 3 - 1958
2+
3+
[문제 링크](https://www.acmicpc.net/problem/1958)
4+
5+
### 성능 요약
6+
7+
메모리: 87824 KB, 시간: 44 ms
8+
9+
### 분류
10+
11+
다이나믹 프로그래밍, 문자열, 최장 공통 부분 수열 문제
12+
13+
### 제출 일자
14+
15+
2025년 10월 6일 10:50:31
16+
17+
### 문제 설명
18+
19+
<p>문자열과 놀기를 세상에서 제일 좋아하는 영식이는 오늘도 문자열 2개의 LCS(Longest Common Subsequence)를 구하고 있었다. 어느 날 영식이는 조교들이 문자열 3개의 LCS를 구하는 것을 보았다. 영식이도 도전해 보았지만 실패하고 말았다.</p>
20+
21+
<p>이제 우리가 할 일은 다음과 같다. 영식이를 도와서 문자열 3개의 LCS를 구하는 프로그램을 작성하라.</p>
22+
23+
### 입력
24+
25+
<p>첫 줄에는 첫 번째 문자열이, 둘째 줄에는 두 번째 문자열이, 셋째 줄에는 세 번째 문자열이 주어진다. 각 문자열은 알파벳 소문자로 이루어져 있고, 길이는 100보다 작거나 같다.</p>
26+
27+
### 출력
28+
29+
<p>첫 줄에 첫 번째 문자열과 두 번째 문자열과 세 번째 문자열의 LCS의 길이를 출력한다.</p>
30+

0 commit comments

Comments
 (0)