Skip to content

Commit ffc5efd

Browse files
authored
Merge pull request #1287 from yyyyyyyyyKim/main
[yyyyyyyyyKim] WEEK 03 solutions
2 parents 89abd77 + e63ffbe commit ffc5efd

File tree

5 files changed

+86
-0
lines changed

5 files changed

+86
-0
lines changed

โ€Žcombination-sum/yyyyyyyyyKim.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution:
2+
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
3+
4+
answer = []
5+
6+
# ์žฌ๊ท€
7+
def backtrack(start, path, total):
8+
# total์ด target๊ณผ ๊ฐ™์•„์ง€๋ฉด path๋ณต์‚ฌํ•ด์„œ answer์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ข…๋ฃŒ
9+
if total == target:
10+
answer.append(path[:])
11+
return
12+
13+
# total์ด target๊ฐ’ ๋„˜์–ด๊ฐ€๋ฉด ์ข…๋ฃŒ
14+
if total > target:
15+
return
16+
17+
for i in range(start, len(candidates)):
18+
path.append(candidates[i]) # ์ผ๋‹จ path์— ์ถ”๊ฐ€ํ•˜๊ณ 
19+
backtrack(i, path, total + candidates[i]) # ๊ฒ€์ฆํ•˜๊ธฐ
20+
path.pop() # ๋งˆ์ง€๋ง‰ ๊ฐ’ ๊บผ๋‚ด๊ณ  ๋‹ค์Œ์œผ๋กœ
21+
22+
# backtrack ํ•จ์ˆ˜ํ˜ธ์ถœ
23+
backtrack(0, [], 0)
24+
25+
return answer

โ€Ždecode-ways/yyyyyyyyyKim.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution:
2+
def numDecodings(self, s: str) -> int:
3+
4+
# DP
5+
dp = [0]*(len(s)+1)
6+
7+
# s๊ฐ€ 0์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด 0 return
8+
if s[0] == '0':
9+
return 0
10+
11+
dp[0] = 1 # ๋นˆ๋ฌธ์ž์—ด์€ ํ•ด์„๊ฐ€๋Šฅํ•œ 1๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ์ทจ๊ธ‰ (์ดˆ๊ธฐ๊ธฐ์ค€์  ์—ญํ• , dp[i-2]๊ณ„์‚ฐ์‹œํ•„์š”)
12+
dp[1] = 1 # ์ฒซ๋ฒˆ์งธ์ž๋ฆฌ์˜ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์€ 1๊ฐ€์ง€
13+
14+
# len(s)๊ฐ€ 2 ์ด์ƒ์ผ๋•Œ
15+
for i in range(2,len(s)+1):
16+
one = int(s[i-1]) # ํ•œ์ž๋ฆฌ(ํ˜„์žฌ์ž๋ฆฌ)
17+
two = int(s[i-2:i]) # ํ•œ์ž๋ฆฌ + ์•ž์ž๋ฆฌ = ๋‘์ž๋ฆฌ
18+
19+
if 1 <= one <= 9:
20+
dp[i] += dp[i-1]
21+
if 10 <= two <= 26:
22+
dp[i] += dp[i-2]
23+
24+
return dp[len(s)]

โ€Žmaximum-subarray/yyyyyyyyyKim.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def maxSubArray(self, nums: List[int]) -> int:
3+
# ์‹œ๊ฐ„๋ณต์žก๋„: O(n) - nums ๋ฐฐ์—ด์„ ํ•œ ๋ฒˆ๋งŒ ์ˆœํšŒํ•จ
4+
# ๊ณต๊ฐ„๋ณต์žก๋„: O(n) - dp ๋ฐฐ์—ด์„ nums ๊ธธ์ด๋งŒํผ ์ƒ์„ฑ
5+
6+
# DP
7+
dp = [0]*len(nums)
8+
dp[0] = nums[0] # ์ดˆ๊ธฐํ™”
9+
10+
for i in range(1,len(nums)):
11+
# ํ˜„์žฌ๊ฐ’๊ณผ (์ด์ „๊นŒ์ง€์˜ ํ•ฉ + ํ˜„์žฌ๊ฐ’) ์ค‘ ๋” ํฐ ๊ฐ’์„ dp[i]์— ์ €์žฅ
12+
dp[i] = max(nums[i], nums[i]+dp[i-1])
13+
14+
return max(dp)

โ€Žnumber-of-1-bits/yyyyyyyyyKim.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Solution:
2+
def hammingWeight(self, n: int) -> int:
3+
answer = 0
4+
5+
while n > 0:
6+
answer += n%2 #๋‚˜๋จธ์ง€(ํ˜„์žฌ ๋น„ํŠธ๊ฐ€ 1์ด๋ฉด ++)
7+
n //= 2 #๋ชซ(๋‹ค์Œ ๋น„ํŠธ๋กœ ์ด๋™)
8+
9+
return answer

โ€Žvalid-palindrome/yyyyyyyyyKim.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def isPalindrome(self, s: str) -> bool:
3+
4+
# ์†Œ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝ
5+
s = s.lower()
6+
p = ""
7+
8+
# ๋ฌธ์ž,์ˆซ์ž๋งŒ ๋ฝ‘๊ธฐ
9+
for i in range(len(s)):
10+
if (ord(s[i]) > 96 and ord(s[i]) < 123) or (ord(s[i]) >= 48 and ord(s[i]) <= 57):
11+
p += s[i]
12+
13+
# ๋ฌธ์ž์—ด ๋’ค์ง‘๊ธฐ
14+
return p == p[::-1]

0 commit comments

Comments
ย (0)