Skip to content

Commit e7657c5

Browse files
committed
[7th batch] week 6 - longest increasing subsequence
1 parent 40c8746 commit e7657c5

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# 7๊ธฐ ํ’€์ด
2+
# ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n^2)
3+
# - ๊ฐ ์›์†Œ๋งˆ๋‹ค ์ด์ „ ์ธ๋ฑ์Šค๋“ค์„ ๋ชจ๋‘ ํ™•์ธํ•˜๋ฏ€๋กœ ์ด์ค‘ for๋ฌธ์„ ๋Œ์•„์•ผ ํ•จ
4+
# ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
5+
# - dp ๊ณ„์‚ฐ์„ ์œ„ํ•œ ๋ฆฌ์ŠคํŠธ๋Š” nums์˜ ๊ธธ์ด์— ์˜์กด
6+
class Solution:
7+
def lengthOfLIS(self, nums: List[int]) -> int:
8+
# ๊ฐ ์ธ๋ฑ์Šค์—์„œ์˜ ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ์ €์žฅํ•˜๋Š” dp ๋ฆฌ์ŠคํŠธ
9+
dp = [1 for _ in range(len(nums))]
10+
11+
for i in range(1, len(nums)):
12+
# i ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐ ํ•˜๊ธฐ ์œ„ํ•ด
13+
# ์ด์ „ ์ธ๋ฑ์Šค๋“ค ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ธธ์ด๋ฅผ ์ฐพ์•„๋‚ด์–ด ์ €์žฅํ•˜๋Š” ์žฅ์‹์ด๋‹ค.
14+
max_lis = 1
15+
for j in range(0, i):
16+
# j ์ธ๋ฑ์Šค์˜ ์˜๋ฏธ๋Š” i๋ณด๋‹ค ์ด์ „ ์ธ๋ฑ์Šค ํƒ๋ฐฉํ•˜๊ธฐ ์œ„ํ•จ
17+
if nums[j] < nums[i]: # ์ด์ „ ์ธ๋ฑ์Šค(j ์ธ๋ฑ์Šค)์— ์žˆ๋Š” ๊ฐ’์ด i ์ธ๋ฑ์Šค์˜ ๊ฐ’๋ณด๋‹ค ์ž‘๋‹ค๋ฉด
18+
# ๊ธฐ์กด์˜ max_lis์™€ j ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธธ์ด ๊ฐ’ + 1(i ์ธ๋ฑ์Šค ํฌํ•จํ•œ ๊ธธ์ด)๋ฅผ ๋น„๊ตํ•˜์—ฌ
19+
# ๋” ํฐ ์ˆ˜๋ฅผ max_list์— ์—…๋ฐ์ดํŠธ ํ•ด์ค€๋‹ค.
20+
max_lis = max(max_lis, dp[j] + 1)
21+
22+
# ๊ณ„์‚ฐ๋œ max_lis๋ฅผ dp[i]์— ์—…๋ฐ์ดํŠธ
23+
dp[i] = max_lis
24+
25+
return max(dp)

0 commit comments

Comments
ย (0)