LeetCode Problems/Easy

๐Ÿ˜ LeetCode Easy Collections III - 6 Problems

metamong 2025. 1. 29.

0231. Power of Two / 0118. Pascal's Triangle

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        
        if n <= 0: return False
        
        def pot(n):
            if n == 1:
                return True
            if n%2 == 1:
                return False
            
            return pot(n//2)
        
        return pot(n)

๐Ÿ˜ 0231) ํฐ problem์„ 2๋กœ ๊ณ„์† ๋‚˜๋ˆ„๋ฉฐ sub-problem์œผ๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ๋ฉฐ ๊ณ„์† ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์€ Recursion์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ์„ ์ง๊ด€์ ์œผ๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋จผ์ € n == 1 / n%2 == 1 base case๋ฅผ ์ƒ๊ฐํ•˜๊ณ  / ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด pot(n//2)๋กœ ์ž˜๊ฒŒ ์ชผ๊ฐœ์–ด ๋ฌธ์ œ๋ฅผ ํ’€์–ด๊ฐ€๋ฉด OK

class Solution:
    def generate(self, numRows: int) -> List[List[int]]:
        ans = [[1]]
        for i in range(1,numRows):
            row = []
            for j in range(0,i+1):
                if j == 0 or j == i:
                    row.append(1)
                else:
                    row.append(ans[i-1][j-1]+ans[i-1][j])
            ans.append(row)
        return ans

 

๐Ÿ˜ 0118) ๊ณต์‹์— ๋งž๊ฒŒ dp table ์ฑ„์›Œ๋‚˜๊ฐ€๋ฉด ๋œ๋‹ค.


0746. Min Cost Climbing Stairs / 1768. Merge Strings Alternately

class Solution:
    def minCostClimbingStairs(self, cost: List[int]) -> int:
        dp = [cost[0], cost[1]]
        for i in range(2, len(cost)):
            dp.append(min(dp[-1],dp[-2])+cost[i])
        return min(dp[-1],dp[-2])

 

๐Ÿ˜ 0746) DP ๋ฌธ์ œ. ๊ฐ dp์˜ element๋Š” ํ•ด๋‹น element ๋ฒˆ์งธ์˜ stair๋ฅผ ๋ฐ˜๋“œ์‹œ ๋ฐŸ์•˜๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ์˜ min cost๋กœ ์ •์˜. ๊ทธ๋Ÿฌ๋ฉด i๋ฒˆ์งธ ๊ณ„๋‹จ์„ ๋ฐŸ์•˜์„ ๋•Œ์˜ min cost dp[i]๋Š” ์•ž์„œ ๋ฐ”๋กœ ์•ž ๊ณ„๋‹จ์„ ๋ฐŸ์•˜์„ ๋•Œ์™€ / ๋ฐ”๋กœ ๋‘๋ฒˆ์งธ ์•ž ๊ณ„๋‹จ์„ ๋ฐŸ์•˜์„ ๋•Œ์˜ cost ์ค‘ ์ตœ์†Ÿ๊ฐ’์— ํ˜„์žฌ ๊ณ„๋‹จ์„ ๋ฐŸ์•˜์„ ๋•Œ์˜ ๊ฐ’์ด๋‹ค. ์ดํ›„ ์ญ‰ dp๋ฅผ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„, ๋งจ ๋งˆ์ง€๋ง‰ ๊ณ„๋‹จ์„ ๋ฐŸ์•˜์„ ๋•Œ / ๋งจ ๋งˆ์ง€๋ง‰ ๋ฐ”๋กœ ์•ž ๊ณ„๋‹จ์„ ๋ฐŸ์•˜์„ ๋•Œ์˜ cost ์ค‘ ์ตœ์†Ÿ๊ฐ’์œผ๋กœ ์ •๋‹ต ๋ฆฌํ„ด

class Solution:
    def mergeAlternately(self, word1: str, word2: str) -> str:
        ans = ''
        for x in range(min(len(word1),len(word2))):
            ans += word1[x]
            ans += word2[x]
        if len(word1) > len(word2):
            ans += word1[len(word2):]
        elif len(word2) > len(word1):
            ans += word2[len(word1):]
        return ans

 

๐Ÿ˜ 1768) ์ฃผ์–ด์ง„ ์ง€์‹œ์‚ฌํ•ญ๋Œ€๋กœ merging ์ง„ํ–‰. ๋‹จ, ๋‘ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅผ ๊ฒฝ์šฐ, ํฐ ๋ฌธ์ž์—ด์˜ ์˜ค๋ฅธ์ชฝ ๋‚˜๋จธ์ง€๋ฅผ ๋ถ™์ธ๋‹ค.


1071. Greatest Common Divisor of Strings / 2215. Find the Difference of Two Arrays

class Solution:
    def gcdOfStrings(self, str1: str, str2: str) -> str:
        len1, len2 = len(str1), len(str2)
        
        def valid(k):
            if len1 % k or len2 % k: 
                return False
            n1, n2 = len1 // k, len2 // k
            base = str1[:k]
            return str1 == n1 * base and str2 == n2 * base 
        
        for i in range(min(len1, len2), 0, -1):
            if valid(i):
                return str1[:i]
        return ""

 

๐Ÿ˜ ๋‘ ๋ฌธ์ž์—ด ์ค‘ ๊ธธ์ด๊ฐ€ ์ž‘์€ ๋ฌธ์ž์—ด์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด๋‹น ๋ฌธ์ž์—ด ์ „์ฒด ๋ฌธ์ž์—ด๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ๋งจ ์™ผ์ชฝ๊นŒ์ง€ ํ•œ ๊ฐœ์”ฉ ๊ธ€์ž๋ฅผ ์ค„์ด๋ฉด์„œ ํ•ด๋‹น ๋ฌธ์ž์—ด์ด GCD ๋ฌธ์ž์—ด์ธ์ง€ ์ง์ ‘ ํ™•์ธ

class Solution:
    def findDifference(self, nums1: List[int], nums2: List[int]) -> List[List[int]]:
        nums1_kind, nums2_kind = set(nums1), set(nums2)
        l,r=set(),set()
        for num in nums1:
            if num not in nums2_kind:
                l.add(num)
        for num in nums2:
            if num not in nums1_kind:
                r.add(num)
        return [list(l),list(r)]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'LeetCode Problems > Easy' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๐Ÿ˜ LeetCode Easy Collections II - 20 Problems  (1) 2024.09.02
๐Ÿ˜Š LeetCode Easy Collections I - 20 Problems  (1) 2024.08.05

๋Œ“๊ธ€