์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/PYTHON

[ํŒŒ์ด์ฌ PYTHON] LeetCodeใ€Longest Increasing Subsequenceใ€‘

2023. 3. 23. 15:11

class Solution(object):
    def lengthOfLIS(self, nums):

        # ์›์†Œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์œ„์น˜ ์ฐพ๊ธฐ
        def bs(sub,target):
            left = 0
            right = len(sub)-1
            
            while left<=right:
                mid = (left+right)//2
                if sub[mid] < target:
                    left = mid+1
                else:
                    right = mid-1
            return left
        sub = [nums[0]]
        
        for i in range(1,len(nums)):
            if sub[-1]<nums[i]:
                sub.append(nums[i])
            else:
                idx = bs(sub,nums[i])
                sub[idx]=nums[i]
        return len(sub)

 

์˜ˆ์ œ์ฒ˜๋Ÿผ 

 [10, 9, 2, 5, 3, 7, 101, 18] ์ด ์žˆ๋‹ค๊ณ  ํ• ๋•Œ, ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ์ฆ๊ฐ€ํ•˜๊ฒŒ๋” ๊ณ„์† ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

1. ์ฒซ ์›์†Œ์ธ 10์€ ๋น„๊ต ๋Œ€์ƒ์ด ์—†์œผ๋ฏ€๋กœ ๋ฐ”๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค.

sub = [10]

 

2. ๋‘๋ฒˆ์งธ ์›์†Œ์ธ 9๋Š” 10๋ณด๋‹ค ์ž‘๊ณ  ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— 10์„ ์ œ์™ธํ•˜๊ณ  9๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

sub = [9]

 

3. ์„ธ๋ฒˆ์งธ ์›์†Œ์ธ 2๋Š” 9๋ณด๋‹ค ์ž‘๊ณ  ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์—†๊ธฐ ๋–„๋ฌธ์— 9๋ฅผ ์ œ์™ธํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

sub = [2]

 

4. ๋„ค๋ฒˆ์งธ ์›์†Œ์ธ 5 ๋Š” 2๋ณด๋‹ค ์ปค์„œ ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

sub = [2, 5]

 

5. ๋‹ค์„ฏ๋ฒˆ์งธ ์›์†Œ์ธ 3์€ 5๋ณด๋‹ค๋Š” ์ž‘์ง€๋งŒ 2๋ณด๋‹ค๋Š” ํฌ๋‹ค. ๋”ฐ๋ผ์„œ 5๋Œ€์‹  3์œผ๋กœ ์›์†Œ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

sub = [2, 3]

 

6. ์—ฌ์„ฏ๋ฒˆ์งธ ์›์†Œ์ธ 7 ์€ 3๋ณด๋‹ค ํฌ๋ฏ€๋กœ ๋ฐ”๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค.

sub = [2, 3, 7]

 

7. ์ผ๊ณฑ๋ฒˆ์งธ ์›์†Œ์ธ 101๋ณด 7๋ณด๋‹ค ํฌ๋ฏ€๋กœ ๋ฐ”๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค.

sub = [2, 3, 7, 101]

 

8. ์—ฌ๋Ÿ๋ฒˆ์งธ ์›์†Œ์ธ 18์€ 101๋ณด๋‹ค๋Š” ์ž‘์ง€๋งŒ 7๋ณด๋‹ค๋Š” ํฌ๋ฏ€๋กœ 101๋Œ€์‹  18๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

sub = [2, 3, 7, 18]

 

๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ง‘ํ•ฉ์€ [2, 3, 7, 18] ์ด ๋œ๋‹ค.

 

์›๋ฆฌ๋Š”, ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ„์† ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด๊ณ 

 

๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋ถ„ํƒ์ƒ‰์„ ํ†ตํ•ด์„œ ๊ต์ฒดํ•ด์•ผํ•  ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„์•ผํ•œ๋‹ค. 

 

ํŒŒ์ด์ฌ์—์„œ ์ œ๊ณตํ•˜๋Š” bisect_left() ํ•จ์ˆ˜๋กœ ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•ด์„œ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/PYTHON' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํŒŒ์ด์ฌ PYTHON · ์ž๋ฐ” JAVA] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ใ€๊ตฌ๋ช…๋ณดํŠธใ€‘
    • [ํŒŒ์ด์ฌ PYTHON · ์ž๋ฐ” JAVA] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ใ€์ˆซ์ž์˜ ํ‘œํ˜„ใ€‘
    • [ํŒŒ์ด์ฌ PYTHON · ์ž๋ฐ” JAVA] LeetCodeใ€Coin Changeใ€‘
    • [ํŒŒ์ด์ฌ PYTHON · ์ž๋ฐ” JAVA] LeetCodeใ€Container With Most Waterใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”