Skip to content

Commit e55cc8c

Browse files
committed
modifications
1 parent 7487dc0 commit e55cc8c

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

โ€Žlongest-common-subsequence/haklee.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,13 @@
2929
SC:
3030
- ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ์•ž i๊ธ€์ž๋กœ ๋งŒ๋“  ๋ฌธ์ž์—ด๊ณผ ๋‘ ๋ฒˆ์งธ ๋ฌธ์ž์—ด์˜ ์•ž j๊ธ€์ž๋กœ ๋งŒ๋“  ๋ฌธ์ž์—ด์˜ lcs์˜
3131
๊ธธ์ด๋ฅผ ๊ด€๋ฆฌ.
32-
- O(m * n)
32+
- ๊ทธ๋Ÿฐ๋ฐ ์•„์ด๋””์–ด์— ์ œ์‹œ๋œ ์ ํ™”์‹์„ ๋ณด๋ฉด i, j๊ฐ’์— ๋Œ€ํ•œ ์ „์ฒด ๋ฐฐ์—ด์„ ์ €์žฅํ•  ํ•„์š” ์—†์ด i=k์ผ๋•Œ
33+
๊ฐ’์„ ๊ตฌํ•˜๋ ค ํ•œ๋‹ค๋ฉด i=k-1์ผ๋•Œ ๊ตฌํ•œ lcs๊ฐ’๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค.
34+
- ์ฆ‰, ๋ฐฐ์—ด์€ ํ˜„์žฌ ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” i๊ฐ’์— ๋Œ€ํ•œ j๊ฐœ์˜ ์•„์ดํ…œ๊ณผ ์ง์ „์— ๊ตฌํ•œ j๊ฐœ์˜ ์•„์ดํ…œ๋งŒ ์ €์žฅํ•˜๋ฉด
35+
์ถฉ๋ถ„ํ•˜๋‹ค. ์ฆ‰, text2์˜ ๊ธธ์ด์ธ O(n)์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
36+
- ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ text2์˜ ๊ธธ์ด๊ฐ€ text1๋ณด๋‹ค ๊ธธ๋ฉด ์ด ๋‘˜์„ ๋ฐ”๊ฟ”์น˜๊ธฐํ•ด์„œ ์œ„์˜ ๊ณต๊ฐ„๋ณต์žก๋„๋ฅผ O(m)์ด๋ผ๊ณ 
37+
๋ด๋„ ์•„์ด๋””์–ด ์ž์ฒด๋Š” ๋˜‘๊ฐ™์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๊ฐ€?
38+
- ์ฆ‰, O(min(m, n))
3339
3440
TC:
3541
- dp ๋ฐฐ์—ด์„ ์ฑ„์šฐ๋Š” ๋ฐ์— ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ ๋‹จ์ˆœ ๋ง์…ˆ, ๋‹ค๋ฅผ ๊ฒฝ์šฐ ๋‘ ๊ฐ’ ๋น„๊ต. ๋‘˜ ๋‹ค O(1).
@@ -39,14 +45,20 @@
3945

4046
class Solution:
4147
def longestCommonSubsequence(self, text1: str, text2: str) -> int:
42-
dp = [[0 for _ in range(len(text2) + 1)] for _ in range(len(text1) + 1)]
48+
if len(text2) > len(text1):
49+
# ์ด ์ตœ์ ํ™”๊นŒ์ง€ ํ•ด์ฃผ๋ฉด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ๋งŽ์ด ์ค„์–ด๋“ค ์ˆ˜ ์žˆ๋‹ค.
50+
text1, text2 = text2, text1
51+
52+
dp = [[0 for _ in range(len(text2) + 1)] for _ in range(2)]
4353

4454
for i in range(1, len(text1) + 1):
55+
i_prev = (i + 1) % 2
56+
i_cur = i % 2
4557
for j in range(1, len(text2) + 1):
46-
dp[i][j] = (
47-
dp[i - 1][j - 1] + 1
58+
dp[i_cur][j] = (
59+
dp[i_prev][j - 1] + 1
4860
if text1[i - 1] == text2[j - 1]
49-
else max(dp[i - 1][j], dp[i][j - 1])
61+
else max(dp[i_prev][j], dp[i_cur][j - 1])
5062
)
5163

52-
return dp[-1][-1]
64+
return dp[i_cur][-1]

โ€Žsum-of-two-integers/haklee.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ def getSum(self, a: int, b: int) -> int:
116116
b์˜ ๋ฒ”์œ„๊ฐ€ ์ œํ•œ๋˜์–ด ์žˆ์–ด์„œ ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅํ•œ, ์ฆ‰, ํ•„์š” ์—†๋Š” ์ˆซ์ž๋“ค์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
117117
118118
SC:
119-
- O(n^2). ์ •ํ™•ํžˆ๋Š”, (2*n+1)^2 ๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅํ•œ๋‹ค.
119+
- ์ฝ”๋“œ ์ฐธ์กฐ. O(n).
120120
121121
TC:
122122
- ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ๋ฐ”๋กœ ์ ‘๊ทผ. O(1).
@@ -127,7 +127,7 @@ class Solution:
127127
def getSum(self, a: int, b: int) -> int:
128128
x = list(range(0, 2001))
129129
x.extend(list(range(-2000, 0)))
130-
v = x * 2
131-
s = list(range(0, 4001))
132-
e = list(range(4001, 8002))
130+
v = x * 2 # SC: O(n)
131+
s = list(range(0, 4001)) # SC: O(n)
132+
e = list(range(4001, 8002)) # SC: O(n)
133133
return v[s[a] : e[a]][b]

0 commit comments

Comments
ย (0)