Skip to content

Commit 99a1eb9

Browse files
authored
Merge pull request #508 from mangodm-web/main
[mangodm-web] Week 08 Solutions
2 parents 76fe4b5 + f1f82aa commit 99a1eb9

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from collections import defaultdict
2+
3+
4+
class Solution:
5+
def characterReplacement(self, s: str, k: int) -> int:
6+
"""
7+
- Idea: ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋ฅผ ์ด์šฉํ•ด ํ˜„์žฌ ์œˆ๋„์šฐ ๋‚ด์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถ”์ ํ•œ๋‹ค.
8+
์ตœ๋Œ€ k๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ๋ฐ”๊ฟจ์„ ๋•Œ, ๋ชจ๋“  ๋ฌธ์ž๊ฐ€ ๊ฐ™์€ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
9+
์œˆ๋„์šฐ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉด, ์™ผ์ชฝ ํฌ์ธํ„ฐ๋ฅผ ์ด๋™์‹œ์ผœ ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•œ๋‹ค.
10+
- Time Complexity: O(n), n์€ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋‹ค. ๊ฐ ๋ฌธ์ž๋ฅผ ํ•œ๋ฒˆ์”ฉ ์ˆœํšŒํ•˜๊ณ , ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋ฅผ ์กฐ์ •ํ•œ๋‹ค.
11+
- Space Complexity: O(26) = O(1), ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๋‚ด์— ํฌํ•จ๋œ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๊ธฐ ์œ„ํ•œ ๊ณต๊ฐ„์œผ๋กœ, ์ตœ๋Œ€ ์•ŒํŒŒ๋ฒณ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜(26๊ฐœ)๋งŒํผ ๋Š˜์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.
12+
"""
13+
result = 0
14+
counter = defaultdict(int)
15+
left = 0
16+
17+
for right in range(len(s)):
18+
counter[s[right]] = counter[s[right]] + 1
19+
20+
while (right - left + 1) - max(counter.values()) > k:
21+
counter[s[left]] -= 1
22+
left += 1
23+
24+
result = max(result, right - left + 1)
25+
26+
return result
+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from typing import Optional
2+
3+
4+
class ListNode:
5+
def __init__(self, val=0, next=None):
6+
self.val = val
7+
self.next = next
8+
9+
10+
class Solution:
11+
def mergeTwoLists(
12+
self, list1: Optional[ListNode], list2: Optional[ListNode]
13+
) -> Optional[ListNode]:
14+
"""
15+
- Idea: dummy node๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๊ณ , ๋‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ๋” ์ž‘์€ ๋…ธ๋“œ๋ฅผ dummy node์— ์ด์–ด ๋ถ™์ธ๋‹ค.
16+
๋‘˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋จผ์ € ์ˆœํšŒ๊ฐ€ ๋๋‚ฌ๋‹ค๋ฉด, ๋‚˜๋จธ์ง€ ๋ฆฌ์ŠคํŠธ์˜ ๋‚จ์€ ๋…ธ๋“œ๋“ค์„ ๊ทธ๋Œ€๋กœ ์ด์–ด ๋ถ™์ธ๋‹ค. (๋ฆฌ์ŠคํŠธ ๋‚ด์—์„œ๋Š” ์ˆœ์„œ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ์Œ์ด ๋ณด์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค.)
17+
- Time Complexity: O(n), n์€ m + k, m๊ณผ k์€ ๊ฐ๊ฐ list1, list2์˜ ๊ธธ์ด์ด๋‹ค.
18+
- Space Complexity: O(1), ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๊ธฐ์กด ๋…ธ๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•œ๋‹ค.
19+
"""
20+
merged = ListNode()
21+
cur = merged
22+
23+
while list1 and list2:
24+
if list1.val > list2.val:
25+
cur.next = list2
26+
list2 = list2.next
27+
else:
28+
cur.next = list1
29+
list1 = list1.next
30+
cur = cur.next
31+
32+
cur.next = list1 or list2
33+
34+
return merged.next

0 commit comments

Comments
ย (0)