Skip to content

Commit c360d86

Browse files
Create taurus09318976.py
1 parent 598e2ab commit c360d86

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
'''
2+
๋ฌธ์ œ ํ•ต์‹ฌ : ์ด ๋ฌธ์ œ๋Š” ๋‘ ๋ฌธ์ž์—ด์—์„œ ๊ฐ€์žฅ ๊ธด ๊ณตํ†ต ๋ถ€๋ถ„์ˆ˜์—ด์˜ ๊ธธ์ด๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ž„
3+
์—ฌ๊ธฐ์„œ ๋ถ€๋ถ„์ˆ˜์—ด์ด๋ž€, ์›๋ž˜ ๋ฌธ์ž์—ด์—์„œ ์ผ๋ถ€ ๋ฌธ์ž๋ฅผ ์‚ญ์ œํ•ด๋„ ๋˜์ง€๋งŒ, ๋‚จ์€ ๋ฌธ์ž๋“ค์˜ ์ˆœ์„œ๋Š” ๋ฐ”๋€Œ๋ฉด ์•ˆ๋˜๋Š” ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์ž„
4+
5+
ํ•ด๊ฒฐ๋ฐฉ๋ฒ• : 1) 2์ฐจ์› ํ‘œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ฐ ์œ„์น˜์— "์—ฌ๊ธฐ๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ณตํ†ต ๋ถ€๋ถ„์ˆ˜์—ด ๊ธธ์ด"๋ฅผ ์ €์žฅํ•จ
6+
2) ๋‘ ๋ฌธ์ž๊ฐ€ ๊ฐ™์œผ๋ฉด, ์ด์ „ ๊ฒฐ๊ณผ์— 1์„ ๋”ํ•จ
7+
3) ๋‘ ๋ฌธ์ž๊ฐ€ ๋‹ค๋ฅด๋ฉด, ์œ„์ชฝ ๋˜๋Š” ์™ผ์ชฝ ์ค‘ ๋” ํฐ ๊ฐ’์„ ๊ฐ€์ ธ์˜ด
8+
9+
์‹œ๊ฐ„ ๋ณต์žก๋„: O(m ร— n)
10+
์™ธ๋ถ€ ๋ฐ˜๋ณต๋ฌธ์ด m๋ฒˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค (text1์˜ ๊ธธ์ด)
11+
๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ์ด n๋ฒˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค (text2์˜ ๊ธธ์ด)
12+
๊ฐ ๋ฐ˜๋ณต์—์„œ ํ•˜๋Š” ์ž‘์—…์€ ์ƒ์ˆ˜ ์‹œ๊ฐ„ O(1)์ž…๋‹ˆ๋‹ค
13+
๋”ฐ๋ผ์„œ ์ด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(m ร— n)์ž…๋‹ˆ๋‹ค
14+
15+
๊ณต๊ฐ„ ๋ณต์žก๋„: O(m ร— n)
16+
(m+1) ร— (n+1) ํฌ๊ธฐ์˜ 2์ฐจ์› ๋ฐฐ์—ด dp๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค
17+
๋”ฐ๋ผ์„œ ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” O(m ร— n)์ž…๋‹ˆ๋‹ค
18+
19+
'''
20+
21+
class Solution:
22+
def longestCommonSubsequence(self, text1: str, text2: str):
23+
m = len(text1) # ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ m์— ์ €์žฅ
24+
n = len(text2) # ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ n์— ์ €์žฅ
25+
26+
# (m+1) x (n+1) ํฌ๊ธฐ์˜ 2์ฐจ์› ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ๋ชจ๋“  ๊ฐ’์„ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
27+
# +1์„ ํ•˜๋Š” ์ด์œ : ๋นˆ ๋ฌธ์ž์—ด๊ณผ์˜ ๋น„๊ต๋ฅผ ์œ„ํ•ด ์ฒซ ๋ฒˆ์งธ ํ–‰๊ณผ ์—ด์„ 0์œผ๋กœ ๋‘ 
28+
dp = [[0] * (n + 1) for _ in range(m + 1)]
29+
30+
# 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ด์œ : 0๋ฒˆ์งธ ํ–‰๊ณผ ์—ด์€ ๋นˆ ๋ฌธ์ž์—ด์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ์ด๋ฏธ 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋จ
31+
for i in range(1, m + 1): # text1์˜ ๊ฐ ๋ฌธ์ž์— ๋Œ€ํ•ด
32+
for j in range(1, n + 1): # text2์˜ ๊ฐ ๋ฌธ์ž์— ๋Œ€ํ•ด
33+
# text1์˜ (i-1)๋ฒˆ์งธ ๋ฌธ์ž์™€ text2์˜ (j-1)๋ฒˆ์งธ ๋ฌธ์ž๊ฐ€ ๊ฐ™์€์ง€ ํ™•์ธ
34+
# i-1, j-1์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ : dp ๋ฐฐ์—ด์€ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์ง€๋งŒ ๋ฌธ์ž์—ด ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘
35+
if text1[i-1] == text2[j-1]:
36+
# ๊ฐ™์œผ๋ฉด: ๋Œ€๊ฐ์„  ์œ„ ๊ฐ’์— 1์„ ๋”ํ•จ (์ด์ „๊นŒ์ง€์˜ LCS + ํ˜„์žฌ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž 1๊ฐœ)
37+
dp[i][j] = dp[i-1][j-1] + 1
38+
else:
39+
# ๋‹ค๋ฅด๋ฉด: ์œ„์ชฝ ๊ฐ’๊ณผ ์™ผ์ชฝ ๊ฐ’ ์ค‘ ๋” ํฐ ๊ฐ’์„ ์„ ํƒ
40+
# ์œ„์ชฝ: text1์—์„œ ํ˜„์žฌ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๊ฒฝ์šฐ
41+
# ์™ผ์ชฝ: text2์—์„œ ํ˜„์žฌ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๊ฒฝ์šฐ
42+
dp[i][j] = max(dp[i-1][j], dp[i][j-1])
43+
44+
# dp[m][n]์—๋Š” ์ „์ฒด ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ LCS ๊ธธ์ด๊ฐ€ ์ €์žฅ๋จ
45+
return dp[m][n]
46+
47+
48+
49+

0 commit comments

Comments
ย (0)