Skip to content

Commit 7a8267a

Browse files
authored
Merge pull request #975 from sungjinwi/main
[suwi] Week 08
2 parents fd46505 + 1fdda6c commit 7a8267a

File tree

4 files changed

+110
-0
lines changed

4 files changed

+110
-0
lines changed

โ€Žclone-graph/sungjinwi.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
"""
2+
ํ’€์ด :
3+
์žฌ๊ท€๋ฅผ ์ด์šฉํ•ด์„œ dfsํ’€์ด
4+
node๋ฅผ ๋ณต์ œํ•˜๊ณ  ๋…ธ๋“œ์˜ ์ด์›ƒ๋œ ๋…ธ๋“œ์— ๋Œ€ํ•ด์„œ ์žฌ๊ท€ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์™„์„ฑํ•œ๋‹ค
5+
6+
clones ๋”•์…”๋„ˆ๋ฆฌ์— ์ด๋ฏธ ๋ณต์‚ฌ๋œ node๋“ค์„ ์ €์žฅํ•ด์„œ ์ด๋ฏธ ๋ณต์ œ๋œ node์— ๋Œ€ํ•ด
7+
ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐ”๋กœ return
8+
9+
๋…ธ๋“œ์˜ ์ˆ˜ : V(์ •์  : Vertex) ์ด์›ƒ์˜ ์ˆ˜ : E(๊ฐ„์„  : Edge)๋ผ๊ณ  ํ•  ๋•Œ
10+
11+
TC : O(V + E)
12+
๋…ธ๋“œ์™€ ์ด์›ƒ์— ๋Œ€ํ•ด์„œ ์ˆœํšŒํ•˜๋ฏ€๋กœ
13+
14+
SC : O(V + E)
15+
ํ•ด์‹œํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๊ฐ€ ๋…ธ๋“œ์˜ ์ˆ˜์— ๋น„๋ก€ํ•ด์„œ ์ปค์ง€๊ณ 
16+
dfs์˜ ํ˜ธ์ถœ์Šคํƒ์€ ์ด์›ƒ์˜ ์ˆ˜๋งŒํผ ์Œ“์ด๋ฏ€๋กœ
17+
"""
18+
19+
"""
20+
# Definition for a Node.
21+
class Node:
22+
def __init__(self, val = 0, neighbors = None):
23+
self.val = val
24+
self.neighbors = neighbors if neighbors is not None else []
25+
"""
26+
from typing import Optional
27+
28+
class Solution:
29+
def cloneGraph(self, node: Optional['Node']) -> Optional['Node']:
30+
if not node :
31+
return None
32+
33+
clones = {}
34+
35+
def dfs(node : Optional['Node']) -> Optional['Node']:
36+
if node in clones :
37+
return clones[node]
38+
clone = Node(node.val)
39+
clones[node] = clone
40+
for nei in node.neighbors :
41+
clone.neighbors.append(dfs(nei))
42+
return clone
43+
44+
return dfs(node)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
"""
2+
ํ’€์ด :
3+
๋ถ€๋ถ„๋ฌธ์ž์—ด ์ค‘์— ๊ฐ€์žฅ ๋งŽ์€ ๋นˆ๋„์˜ ๋ฌธ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‹ค๋ฅธ ๋ฌธ์ž๊ฐ€ k๊ฐœ ์ดํ•˜๋กœ ์žˆ์œผ๋ฉด
4+
๊ฐ™์€ ๋ฐ˜๋ณต๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค
5+
sliding window ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ์ตœ๋‹ค๋นˆ๋„ ๋ฌธ์ž์™€ ๋‹ค๋ฅธ ๋ฌธ์ž๊ฐ€ k๊ฐœ ์ดˆ๊ณผ์ด๋ฉด start๋ฅผ ์ด๋™์‹œํ‚จ๋‹ค
6+
7+
SC : O(N)
8+
start, endํฌ์ธํ„ฐ๋Š” ๋ฌธ์ž์—ด ๊ธธ์ด์— ๋น„๋ก€ํ•ด ๋ฐ˜๋ณตํ•ด์„œ ์ด๋™ํ•˜๋ฏ€๋กœ (max ์—ฐ์‚ฐ์€ O(26))
9+
10+
TC : O(1)
11+
counter ๋”•์…”๋„ˆ๋ฆฌ๋Š” ์ตœ๋Œ€ ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ O(26)์œผ๋กœ ์ƒ์ˆ˜์ด๋‹ค๋‹ค
12+
"""
13+
14+
class Solution:
15+
def characterReplacement(self, s: str, k: int) -> int:
16+
start, end = 0, 0
17+
counter = {}
18+
max_len = 0
19+
while end < len(s) :
20+
counter[s[end]] = counter.get(s[end], 0) + 1
21+
while end - start + 1 - max(counter.values()) > k :
22+
counter[s[start]] -= 1
23+
start += 1
24+
max_len = max(max_len, end - start + 1)
25+
end += 1
26+
return max_len

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
"""
2+
ํ’€์ด : mask๋ฅผ int ๋น„ํŠธ ์ˆ˜ ๋งŒํผ ์ด๋™์‹œํ‚ค๋ฉด์„œ 1์˜ ๊ฐœ์ˆ˜ ์„ผ๋‹ค
3+
4+
TC : O(1)
5+
6+
SC : O(1)
7+
"""
8+
9+
class Solution:
10+
def hammingWeight(self, n: int) -> int:
11+
mask = 1 << 31
12+
cnt = 0
13+
while mask :
14+
if mask & n :
15+
cnt += 1
16+
mask >>= 1
17+
return cnt

โ€Žsum-of-two-integers/sungjinwi.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"""
2+
ํ’€์ด :
3+
๋น„ํŠธ ์—ฐ์‚ฐ์ž xor, and, shift๋ฅผ ์ด์šฉํ•ด ์ˆ˜ํ–‰ํ•œ๋‹ค
4+
a๋Š” a์™€ b์˜ xor์—ฐ์‚ฐ ๊ฒฐ๊ณผ
5+
-> a์™€ b์˜ set-bit๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๋Š” ์œ„์น˜์—์„œ์˜ ํ•ฉ์—ฐ์‚ฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
6+
b๋Š” a์™€ b์˜ and์—ฐ์‚ฐ ๊ฒฐ๊ณผ << 1
7+
-> a์™€ b๊ฐ€ ๋‘˜ ๋‹ค 1์ธ ์œ„์น˜์—์„œ ํ•ฉ์„ ํ†ตํ•ด ์˜ฌ๋ฆผ์ˆ˜๋กœ ์˜ฌ๋ ค์ฃผ๋Š” ์—ญํ•  ์ˆ˜ํ–‰
8+
9+
ํŒŒ์ด์ฌ์—์„œ๋Š” int๊ฐ€ 32๋น„ํŠธ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ 1 32๊ฐœ๋กœ ์ด๋ฃจ์–ด์ง„ mask๋ฅผ ์„ค์ •ํ•ด์ฃผ๊ณ 
10+
์˜ฌ๋ฆผ์ˆ˜ b๊ฐ€ 32๋น„ํŠธ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ  ์กด์žฌํ• ๋™์•ˆ while๋ฌธ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค
11+
๋ฐ˜๋ณต๋ฌธ ์ง„ํ–‰ ํ›„ 32๋น„ํŠธ์— ๋Œ€ํ•ด์„œ๋งŒ return
12+
13+
TC : O(1)
14+
15+
SC : O(1)
16+
"""
17+
18+
class Solution:
19+
def getSum(self, a: int, b: int) -> int:
20+
mask = 0xFFFFFFFF
21+
while mask & b :
22+
a, b = a ^ b, (a & b) << 1
23+
return a & mask if b > 0 else a

0 commit comments

Comments
ย (0)