Skip to content

Commit 0ad15e0

Browse files
Create taurus09318976.py
1 parent c3a70d8 commit 0ad15e0

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
'''
2+
์ด ๋ฌธ์ œ๋Š” ์ฃผ์–ด์ง„ ์ •์ˆ˜ ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด(LIS)์˜ ๊ธธ์ด๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ž„
3+
๋ถ€๋ถ„ ์ˆ˜์—ด์ด ์—ฐ์†๋˜์ง€๋Š” ์•Š์•„๋„ ๋˜์ง€๋งŒ ์ˆœ์„œ๋Š” ์œ ์ง€ํ•ด์•ผ ํ•จ
4+
์ด์ง„ ํƒ์ƒ‰์„ ํ™œ์šฉ!
5+
6+
์‹œ๊ฐ„ ๋ณต์žก๋„: O(n log n)
7+
๊ฐ ์ˆซ์ž๋งˆ๋‹ค ์ด์ง„ ํƒ์ƒ‰(O(log n))์„ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ์ „์ฒด O(n log n)
8+
9+
๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
10+
tails ๋ฐฐ์—ด์ด ์ตœ๋Œ€ n์˜ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•จ
11+
12+
13+
Example 1์˜ ๊ฒฝ์šฐ๋ฅผ ๋“ค๋ฉด
14+
nums = [10,9,2,5,3,7,101,18]
15+
16+
| ๋‹จ๊ณ„ | ์ฒ˜๋ฆฌํ•  ์ˆซ์ž | ๋™์ž‘ ์„ค๋ช… | `tails` ๋ฐฐ์—ด ์ƒํƒœ |
17+
|------|-------------|----------------------------------|-----------------------|
18+
| 1 | 10 | ๋นˆ ๋ฐฐ์—ด์— 10 ์ถ”๊ฐ€ | `[10]` |
19+
| 2 | 9 | 10๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ 10 โ†’ 9๋กœ ๊ต์ฒด | `[9]` |
20+
| 3 | 2 | 9๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ 9 โ†’ 2๋กœ ๊ต์ฒด | `[2]` |
21+
| 4 | 5 | 2๋ณด๋‹ค ํฌ๋ฏ€๋กœ 5 ์ถ”๊ฐ€ | `[2, 5]` |
22+
| 5 | 3 | 5๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ 5 โ†’ 3๋กœ ๊ต์ฒด | `[2, 3]` |
23+
| 6 | 7 | 3๋ณด๋‹ค ํฌ๋ฏ€๋กœ 7 ์ถ”๊ฐ€ | `[2, 3, 7]` |
24+
| 7 | 101 | 7๋ณด๋‹ค ํฌ๋ฏ€๋กœ 101 ์ถ”๊ฐ€ | `[2, 3, 7, 101]` |
25+
| 8 | 18 | 101๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ 101 โ†’ 18๋กœ ๊ต์ฒด | `[2, 3, 7, 18]` |
26+
27+
์ตœ์ข… ๊ฒฐ๊ณผ : tails ๋ฐฐ์—ด์˜ ๊ธธ์ด = 4
28+
์ตœ์žฅ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด ์˜ˆ์‹œ : [2, 3, 7, 18] ๋˜๋Š” [2, 3, 7, 101] ๋“ฑ์ด ๊ฐ€๋Šฅํ•จ
29+
30+
'''
31+
32+
class Solution:
33+
def lengthOfLIS(self, nums: List[int]):
34+
35+
# ๊ฐ ๊ธธ์ด์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ์ €์žฅํ•จ
36+
tails = []
37+
38+
for num in nums:
39+
40+
# num์ด ๋“ค์–ด๊ฐˆ ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์ด์ง„ ํƒ์ƒ‰์œผ๋กœ ์ฐพ์Œ
41+
index = bisect.bisect_left(tails, num)
42+
43+
if index == len(tails):
44+
45+
# num์ด tails์˜ ๋ชจ๋“  ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ์ƒˆ๋กœ์šด ๊ธธ์ด์˜ ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ์ƒ์„ฑ
46+
tails.append(num)
47+
else:
48+
49+
# ๊ธฐ์กด ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ๋” ์ž‘์€ num์œผ๋กœ ๊ฐฑ์‹ ํ•จ
50+
# tails ๋ฐฐ์—ด์˜ ์˜๋ฏธ๋Š” tails[i] = ๊ธธ์ด๊ฐ€ i+1์ธ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ๊ฐ€์žฅ ์ž‘์€ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ์œ ์ง€ํ•˜์—ฌ
51+
# ์ƒˆ๋กœ์šด ์ˆซ์ž๊ฐ€ ์ถ”๊ฐ€๋˜๊ธฐ ์‰ฌ์›Œ์ง
52+
tails[index] = num
53+
54+
# tails์˜ ๊ธธ์ด๊ฐ€ ์ตœ๋Œ€ LIS ๊ธธ์ด์ž„
55+
return len(tails)
56+
57+

0 commit comments

Comments
ย (0)