Skip to content

Commit 37e3429

Browse files
authored
Merge pull request #2460 from kangdaia/main
[kangdaia] WEEK 03 solutions
2 parents da3b6c4 + bff76a0 commit 37e3429

3 files changed

Lines changed: 103 additions & 0 deletions

File tree

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
class Solution:
2+
def combinationSum(self, candidates: list[int], target: int) -> list[list[int]]:
3+
"""
4+
์ฃผ์–ด์ง„ ์ˆซ์ž ๋ชฉ๋ก์—์„œ ๋ชฉํ‘œํ•˜๋Š” ํ•ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์กฐํ•ฉ์„ ์ฐพ๋Š” ํ•จ์ˆ˜
5+
์ˆซ์ž๋Š” ๋™์ผ ์ˆซ์ž๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉํ•ด๋„ ๋จ
6+
7+
๋ฐฉ๋ฒ•:
8+
DFS ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•จ.
9+
- ํ˜„์žฌ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ,
10+
(์„ ํƒ์ง€)
11+
ํ˜„์žฌ ์œ„์น˜์˜ ์ˆซ์ž๊ฐ’์„ ํ˜„์žฌ ์กฐํ•ฉ์— ํฌํ•จํ• ์ง€
12+
- ํ˜„์žฌ ํ•ฉ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋‚จ์€ ๊ฐ’ - ํ˜„์žฌ ๊ฐ’์ด 0 ์ด์ƒ์ด๋ฉด ํฌํ•จ ๊ฐ€๋Šฅ
13+
- ํ˜„์žฌ ๊ฐ’์„ ์—ฌ๋Ÿฌ๋ฒˆ ์“ธ ์ˆ˜ ์žˆ๊ธฐ์— ์ธ๋ฑ์Šค๋ฅผ ๋Š˜๋ฆฌ์ง€ x
14+
ํ˜„์žฌ ์œ„์น˜์˜ ์ˆซ์ž๊ฐ’์„ ํ˜„์žฌ ์กฐํ•ฉ์— ํฌํ•จํ•˜์ง€ ์•Š์„์ง€
15+
- ์ด ์ธ๋ฑ์Šค๊ฐ€ ๋ชฉ๋ก๊ธธ์ด๋ฅผ ๋„˜์–ด๊ฐ€๋ฉด ์•ˆ๋จ
16+
- ํ•ฉ์˜ ๋‚˜๋จธ์ง€ ๊ฐ’์ด 0์ด๋ฉด ๋ชฉํ‘œ์— ๋„๋‹ฌํ•œ๊ฒƒ -> ์กฐํ•ฉ ๋ชฉ๋ก์— ํฌํ•จ
17+
18+
Args:
19+
candidates (list[int]): ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ์ˆซ์ž ๋ชฉ๋ก. unique
20+
target (int): ๋ชฉํ‘œํ•˜๋Š” ํ•ฉ
21+
22+
Returns:
23+
list[list[int]]: ๋ชฉํ‘œํ•˜๋Š” ํ•ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅํ•œ ์ˆซ์ž ์กฐํ•ฉ. unique
24+
"""
25+
combinations = list()
26+
def getCombination(idx, remain, path):
27+
"""
28+
ํ˜„์žฌ ํ•จ์ˆ˜์—์„œ ์žฌ๊ท€๋ฅผ ์œ„ํ•œ helper ํ•จ์ˆ˜
29+
"""
30+
if remain == 0:
31+
combinations.append(path)
32+
return
33+
if idx < len(candidates):
34+
curr = candidates[idx]
35+
if remain - curr >= 0:
36+
getCombination(idx, remain - curr, path + [curr])
37+
getCombination(idx + 1, remain, path)
38+
return
39+
getCombination(0, target, [])
40+
return combinations
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution:
2+
def hammingWeight(self, n: int) -> int:
3+
"""
4+
์ฃผ์–ด์ง„ ์ˆซ์ž์˜ ์ด์ง„ ํ‘œํ˜„์—์„œ, 1์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜
5+
์˜ˆ) 11 -> 1011 => 3
6+
7+
๋ฐฉ๋ฒ•:
8+
1. ์ˆซ์ž๋ฅผ ์ด์ง„๋ฒ•์œผ๋กœ ๋ฐ”๊ฟ”์„œ 1์„ ์ฐพ์•„ ๊ณ„์‚ฐํ•˜๊ธฐ
9+
- ์ด์ง„๋ฒ•์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์—์„œ ์ „์ฒด ์ˆœํšŒ๋ฅผ ํ•˜๊ณ , 1์„ ์ฐพ์„๋•Œ ๋˜ ์ˆœํšŒํ•ด์•ผํ– .
10+
-> ํ•œ๋ฒˆ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์„๊นŒ?
11+
2. ์ˆซ์ž๋ฅผ ์ง์ ‘ ๋น„ํŠธ์—ฐ์‚ฐํ•˜๋ฉฐ ๊ณ„์‚ฐํ•˜๊ธฐ
12+
- ์ˆซ์ž๋ฅผ bitshiftํ•˜๋ฉด์„œ ๋งˆ์ง€๋ง‰ ๋น„ํŠธ๊ฐ€ 1์ธ์ง€ ์•„๋‹Œ์ง€ ์ฐพ๊ธฐ
13+
- 1์ด๋ฉด count + 1
14+
-> ์‹œ๊ฐ„ ๋ณต์žก๋„ O(k) (k๋Š” ๋น„ํŠธ๊ธธ์ด), ๊ณต๊ฐ„๋ณต์žก๋„ O(1)
15+
16+
Args:
17+
n(int): ์–‘์ˆ˜
18+
19+
Returns:
20+
int: ์ด์ง„ ํ‘œํ˜„์—์„œ 1์˜ ๊ฐœ์ˆ˜
21+
"""
22+
curr = n
23+
count = 0
24+
while curr > 0:
25+
if curr & 1 == 1:
26+
count += 1
27+
curr = curr >> 1
28+
return count
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
class Solution:
2+
def isPalindrome(self, s: str) -> bool:
3+
"""
4+
string์ด ํŒฐ๋ฆฐ๋“œ๋กฌ ๋ฌธ์ž์—ด์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ํ•จ์ˆ˜
5+
ํŒฐ๋ฆฐ๋“œ๋กฌ: ๋Œ€์†Œ๋ฌธ์žx ์˜๋ฌธ์ž&์ˆซ์ž ๋งŒ์œผ๋กœ ์•ž๋’ค๊ฐ€ ๋™์ผํ•œ ๋ฌธ์ž์—ด
6+
7+
๋ฐฉ๋ฒ•:
8+
1. ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•„ํ„ฐ/์†Œ๋ฌธ์žํ™”ํ•ด์„œ, ์•ž์—์„œ ๋ฐ˜์ ˆ๊ณผ ๋’ค์˜ ๋ฐ˜์ ˆ (reverse)ํ•œ ๊ฒƒ์„ ๋น„๊ตํ•˜๊ธฐ
9+
-> ์ˆœํšŒ๋ฅผ ๋‘๋ฒˆํ•˜๊ฒŒ ๋จ
10+
2. ์•ž๊ณผ ๋’ค์—์„œ ํฌ์ธํ„ฐ ๋ฐฉ์‹์œผ๋กœ ์ฐพ๊ธฐ
11+
-> ์˜๋ฌธ์žํ˜น์€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฉด ๊ฑด๋„ˆ๋›ฐ๊ธฐ
12+
-> isalnum์œผ๋กœ ์œ ํšจํ•œ ๋ฌธ์ž์ธ์ง€ ํŒ๋‹จ
13+
-> ์‹œ๊ฐ„ ๋ณต์žก๋„ O(n) ๊ณต๊ฐ„ ๋ณต์žก๋„ O(1)
14+
Args:
15+
s (str): ๊ฒ€์‚ฌํ•  ๋ฌธ์ž์—ด
16+
17+
Returns:
18+
bool: ํŒฐ๋ฆฐ๋“œ๋กฌ์ด๋ฉด True, ์•„๋‹ˆ๋ฉด False
19+
"""
20+
i, j = 0, len(s)-1
21+
answer = True
22+
while i < len(s) and j >= 0 and i < j:
23+
if s[i].isalnum() == False:
24+
i += 1
25+
elif s[j].isalnum() == False:
26+
j -= 1
27+
else:
28+
if s[i].lower() == s[j].lower():
29+
answer = answer and True
30+
else:
31+
answer = answer and False
32+
break
33+
i += 1
34+
j -= 1
35+
return answer

0 commit comments

Comments
ย (0)