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
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 ์ค ์ต์๊ฐ์ผ๋ก ์ ๋ต ๋ฆฌํด
'LeetCode Problems > Easy' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ LeetCode Easy Collections II - 20 Problems (1) | 2024.09.02 |
---|---|
๐ LeetCode Easy Collections I - 20 Problems (1) | 2024.08.05 |
๋๊ธ