From cc54ff86f3dfb73fa608662a64ea4213ccba945d Mon Sep 17 00:00:00 2001 From: songyc macbook Date: Wed, 12 Nov 2025 20:20:41 +0900 Subject: [PATCH] 20251112 baekjoon --- code_study/Baekjoon/swift/9252.swift | 51 ++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 code_study/Baekjoon/swift/9252.swift diff --git a/code_study/Baekjoon/swift/9252.swift b/code_study/Baekjoon/swift/9252.swift new file mode 100644 index 0000000..55f053f --- /dev/null +++ b/code_study/Baekjoon/swift/9252.swift @@ -0,0 +1,51 @@ +if let in1 = readLine(), let in2 = readLine() +{ + let s1: [Character] = Array(in1) + let s2: [Character] = Array(in2) + let (l1, l2) = (s1.count, s2.count) + var dp: [[Int]] = Array(repeating: Array(repeating: 0, count: l2+1), count: l1+1) + + for i in 1...l1 { + + let c1 = s1[i-1] + + for j in 1...l2 { + + let c2 = s2[j-1] + + if c1 == c2 { + dp[i][j] = dp[i-1][j-1] + 1 + } + else { + dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + } + + } + } + + print(dp[l1][l2]) + + if dp[l1][l2] != 0 { + var result: String = "" + var (p1, p2) = (l1, l2) + + while !(p1 == 0 || p2 == 0) { + let (c1, c2) = (s1[p1-1], s2[p2-1]) + + if c1 == c2 { + result.append(c1) + (p1, p2) = (p1-1, p2-1) + } + else { + if dp[p1-1][p2] > dp[p1][p2-1] { + p1 -= 1 + } + else { + p2 -= 1 + } + } + } + + print(String(Array(result).reversed())) + } +}