Skip to content

[daehyun99] WEEK 07 Solutions - #2801

Open
daehyun99 wants to merge 5 commits into
DaleStudy:mainfrom
daehyun99:W7
Open

[daehyun99] WEEK 07 Solutions#2801
daehyun99 wants to merge 5 commits into
DaleStudy:mainfrom
daehyun99:W7

Conversation

@daehyun99

@daehyun99 daehyun99 commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

๋‹ต์•ˆ ์ œ์ถœ ๋ฌธ์ œ

์ž‘์„ฑ์ž ์ฒดํฌ ๋ฆฌ์ŠคํŠธ

  • Projects์˜ ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ(โ–ผ)์„ ๋ˆŒ๋Ÿฌ ํ™•์žฅํ•œ ๋’ค, Week๋ฅผ ํ˜„์žฌ ์ฃผ์ฐจ๋กœ ์„ค์ •ํ•ด์ฃผ์„ธ์š”.
  • ๋ฌธ์ œ๋ฅผ ๋ชจ๋‘ ํ‘ธ์‹œ๋ฉด ํ”„๋กœ์ ํŠธ์—์„œ Status๋ฅผ In Review๋กœ ์„ค์ •ํ•ด์ฃผ์„ธ์š”.
  • ์ฝ”๋“œ ๊ฒ€ํ† ์ž 1๋ถ„ ์ด์ƒ์œผ๋กœ๋ถ€ํ„ฐ ์Šน์ธ์„ ๋ฐ›์œผ์…จ๋‹ค๋ฉด PR์„ ๋ณ‘ํ•ฉํ•ด์ฃผ์„ธ์š”.

๊ฒ€ํ† ์ž ์ฒดํฌ ๋ฆฌ์ŠคํŠธ

Important

๋ณธ์ธ ๋‹ต์•ˆ ์ œ์ถœ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋ถ„ PR ํ•˜๋‚˜ ์ด์ƒ์„ ๋ฐ˜๋“œ์‹œ ๊ฒ€ํ† ๋ฅผ ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค!

  • ๋ฐ”๋กœ ์ด์ „์— ์˜ฌ๋ผ์˜จ PR์— ๋ณธ์ธ์„ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด๋กœ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”.
  • ๋ณธ์ธ์ด ๊ฒ€ํ† ํ•ด์•ผํ•˜๋Š” PR์˜ ๋‹ต์•ˆ ์ฝ”๋“œ์— ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์„ธ์š”.
  • ํ† ์š”์ผ ์ „๊นŒ์ง€ PR์„ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์Šน์ธํ•ด์ฃผ์„ธ์š”.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๐Ÿท๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจํ„ด ๋ถ„์„

longest-substring-without-repeating-characters/daehyun99.py
class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        l = 0
        seen = set()
        longest = 0

        for c in s:
            if c not in seen:
                seen.add(c)
                longest = max(longest, len(seen))
            else:
                while c in seen:
                    seen.remove(s[l])
                    l += 1
                seen.add(c)
        return longest
  • ํŒจํ„ด: Two Pointers, Hash Map / Hash Set, Sliding Window
  • ์„ค๋ช…: ๋ฌธ์ž์—ด์—์„œ ์ค‘๋ณต ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜๋ฉฐ ์ตœ์žฅ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์ขŒ์ธก ํฌ์ธํ„ฐ์™€ ์šฐ์ธก ํฌ์ธํ„ฐ์ฒ˜๋Ÿผ ์ฐฝ์„ ์ด๋™์‹œํ‚ค๋ฉฐ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๊ด€๋ฆฌํ•œ๋‹ค. ์ง‘ํ•ฉ์œผ๋กœ ํ˜„์žฌ ์ฐฝ์˜ ๋ฌธ์ž๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ค‘๋ณต ์‹œ ์ฐฝ์„ ์ขํ˜€ ์žฌ์ง„์ž…์„ ํ—ˆ์šฉํ•œ๋‹ค.

๐Ÿ“Š ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

๋ณต์žก๋„
Time O(n)
Space O(min(n, k))

ํ”ผ๋“œ๋ฐฑ: seen ์ง‘ํ•ฉ๊ณผ ํฌ์ธํ„ฐ l์„ ์‚ฌ์šฉํ•ด ์ค‘๋ณต ๋ฌธ์ž๊ฐ€ ๋‚˜์˜ค๋ฉด ์™ผ์ชฝ์„ ์ œ๊ฑฐํ•˜๋ฉฐ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ๊ธธ์ด๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ํ˜„์žฌ ๊ตฌํ˜„์ด ์ ์ ˆํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก ํ’€์ด์— ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ฃผ์„์œผ๋กœ ๋‚จ๊ฒจ๋ณด์„ธ์š”!

@dalestudy

dalestudy Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

๐Ÿ“Š daehyun99 ๋‹˜์˜ ํ•™์Šต ํ˜„ํ™ฉ

์ด๋ฒˆ ์ฃผ ์ œ์ถœ ๋ฌธ์ œ

๋ฌธ์ œ ๋‚œ์ด๋„ ์œ ํ˜• ๋ถ„์„
longest-substring-without-repeating-characters Medium โœ… ์˜๋„ํ•œ ์œ ํ˜•
number-of-islands Medium โœ… ์˜๋„ํ•œ ์œ ํ˜•
reverse-linked-list Easy โœ… ์˜๋„ํ•œ ์œ ํ˜•
set-matrix-zeroes Medium โœ… ์˜๋„ํ•œ ์œ ํ˜•
unique-paths Medium โœ… ์˜๋„ํ•œ ์œ ํ˜•

๋ˆ„์  ํ•™์Šต ์š”์•ฝ

  • ํ’€์ดํ•œ ๋ฌธ์ œ: 29 / 75๊ฐœ
  • ์ด๋ฒˆ ์ฃผ ์œ ํ˜• ์ผ์น˜์œจ: 100% (5๋ฌธ์ œ ์ค‘ 5๋ฌธ์ œ ์ผ์น˜)

๋ฌธ์ œ ํ’€์ด ํ˜„ํ™ฉ

์นดํ…Œ๊ณ ๋ฆฌ ์ง„ํ–‰๋„ ์™„๋ฃŒ
Array โ– โ– โ– โ– โ– โ– โ–ก 8 / 10 (Medium 5, Easy 3)
Dynamic Programming โ– โ– โ– โ– โ–กโ–กโ–ก 6 / 11 (Easy 1, Medium 5)
Matrix โ– โ– โ– โ– โ–กโ–กโ–ก 2 / 4 (Medium 2)
String โ– โ– โ– โ– โ–กโ–กโ–ก 5 / 10 (Medium 2, Easy 3)
Heap โ– โ– โ–กโ–กโ–กโ–กโ–ก 1 / 3 (Medium 1)
Tree โ– โ– โ–กโ–กโ–กโ–กโ–ก 4 / 14 (Medium 3, Easy 1)
Binary โ– โ–กโ–กโ–กโ–กโ–กโ–ก 1 / 5 (Easy 1)
Linked List โ– โ–กโ–กโ–กโ–กโ–กโ–ก 1 / 6 (Easy 1)
Graph โ– โ–กโ–กโ–กโ–กโ–กโ–ก 1 / 8 (Medium 1)
Interval โ–กโ–กโ–กโ–กโ–กโ–กโ–ก 0 / 5 โ† ์•„์ง ์‹œ์ž‘ ์•ˆ ํ•จ

๐Ÿค– ์ด ๋Œ“๊ธ€์€ GitHub App์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”ข API ์‚ฌ์šฉ๋Ÿ‰ (gpt-5-nano)
์š”์ฒญ ์ž…๋ ฅ ํ† ํฐ ์ถœ๋ ฅ ํ† ํฐ ํ•ฉ๊ณ„ ๋น„์šฉ
1 1,856 233 2,089 $0.000186

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๐Ÿท๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจํ„ด ๋ถ„์„

number-of-islands/daehyun99.py
# Time: O(M * N)
# Space: O(M * N)
class Solution:
    def numIslands(self, grid: List[List[str]]) -> int:
        h = len(grid)
        w = len(grid[0])
        count = 0
        for i in range(h):
            for j in range(w):
                if grid[i][j] == "1":
                    stack = []
                    stack.append([i, j])
                    while len(stack) > 0 :
                        x, y = stack.pop()

                        grid[x][y] = "0"
                        if x > 0 and grid[x-1][y] == "1":
                            stack.append([x-1, y])
                        if x + 1 < h and grid[x+1][y] == "1":
                            stack.append([x+1, y])
                        if y > 0 and grid[x][y-1] == "1":
                            stack.append([x, y-1])
                        if y + 1 < w and grid[x][y+1] == "1":
                            stack.append([x, y+1])
                    count += 1
        return count
  • ํŒจํ„ด: Depth-First Search, Backtracking
  • ์„ค๋ช…: ์„ฌ์˜ ์—ฐ๊ฒฐ ์—ฌ๋ถ€๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์Šคํƒ์œผ๋กœ DFS ๋ฐฉ์‹์œผ๋กœ ์ธ์ ‘ ์˜์—ญ์„ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋ฅผ ํ‘œ์‹œํ•˜์—ฌ ์ „์ฒด ์„ฌ์„ ํƒ์ƒ‰ํ•˜๊ณ  ๊ฐœ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ์‹์ด DFS ํŠน์ง•๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Š ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

์œ ์ € ๋ถ„์„ ์‹ค์ œ ๋ถ„์„ ๊ฒฐ๊ณผ
Time O(M * N) O(h * w) โŒ
Space O(M * N) O(h * w) โŒ

ํ”ผ๋“œ๋ฐฑ: grid๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ 1์ธ ์นธ๋งˆ๋‹ค DFS/BFS๋กœ ์—ฐ๊ฒฐ๋œ ์˜์—ญ์„ ํƒ์ƒ‰ํ•œ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ํ˜„์žฌ ๊ตฌํ˜„์ด ์ ์ ˆํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๐Ÿท๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจํ„ด ๋ถ„์„

reverse-linked-list/daehyun99.py
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
# Time: O(N)
# Space: O(1)
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        if head is None:
            return head
        pointer = head
        left = None
        while pointer.next is not None:
            right = pointer.next
            pointer.next = left
            left = pointer
            pointer = right
        pointer.next = left
        return pointer
  • ํŒจํ„ด: Two Pointers, Linked List
  • ์„ค๋ช…: ์ฃผ์–ด์ง„ ์ฝ”๋“œ๋Š” ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ์ˆœํšŒํ•˜๋ฉฐ ํฌ์ธํ„ฐ๋ฅผ ์•ž๋’ค๋กœ ๋ฐ”๊ฟ” ์—ฐ๊ฒฐ ๋ฐฉํ–ฅ์„ ๋’ค์ง‘๋Š” ๊ตฌ์กฐ๋กœ, ๋‘ ํฌ์ธํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ์ˆœํšŒ ๋ฐฉ์‹์ด ํ•ต์‹ฌ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

๐Ÿ“Š ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

์œ ์ € ๋ถ„์„ ์‹ค์ œ ๋ถ„์„ ๊ฒฐ๊ณผ
Time O(N) O(n) โœ…
Space O(1) O(1) โœ…

ํ”ผ๋“œ๋ฐฑ: ์ปค์„œ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋…ธ๋“œ๋ฅผ ๋ฐ˜์ „์‹œํ‚ค๋ฉฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์•ž ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•œ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ํ˜„์žฌ ๊ตฌํ˜„์ด ์ ์ ˆํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๐Ÿท๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจํ„ด ๋ถ„์„

set-matrix-zeroes/daehyun99.py
class Solution:
    def setZeroes(self, matrix: List[List[int]]) -> None:
        row = set()
        col = set()

        for i in range(len(matrix)):
            if 0 in matrix[i]:
                row.add(i)
                for j in range(len(matrix[0])):
                    if matrix[i][j] == 0:
                        col.add(j)

        for i in row:
            matrix[i] = [0] * len(matrix[0])
        
        for i in range(len(matrix)):
            if i in row:
                continue
            for j in range(len(matrix[0])):
                if j in col:
                    matrix[i][j] = 0
  • ํŒจํ„ด: Hash Map / Hash Set, Greedy
  • ์„ค๋ช…: ํ–‰๊ณผ ์—ด์˜ ์ œ๋กœ ์œ„์น˜๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ•ด์‹œ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ–‰ ์ „์ฒด๋ฅผ 0์œผ๋กœ ๋งŒ๋“ค๊ณ  ๋‚˜๋จธ์ง€ ์—ด๋„ 0์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•„์š”ํ•œ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘์ ์ธ ์ตœ์ ํ™”๋ณด๋‹ค๋Š” ์ €์žฅ ํ›„ ์ผ๊ด„ ์ˆ˜์ •ํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

๐Ÿ“Š ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

๋ณต์žก๋„
Time O(m * n)
Space O(m + n)

ํ”ผ๋“œ๋ฐฑ: ๋จผ์ € 0์ด ์กด์žฌํ•˜๋Š” ํ–‰/์—ด์„ ์ˆ˜์ง‘ํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ์ˆœํšŒ์—์„œ 0์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ํ˜„์žฌ ๊ตฌํ˜„์ด ์ ์ ˆํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก ํ’€์ด์— ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ฃผ์„์œผ๋กœ ๋‚จ๊ฒจ๋ณด์„ธ์š”!

Comment thread unique-paths/daehyun99.py

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๐Ÿท๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŒจํ„ด ๋ถ„์„

unique-paths/daehyun99.py
class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        matrix = [[0] * n for _ in range(m)]
        matrix[0][0] += 1

        for x in range(m):
            for y in range(n):
                if x == 0 and y == 0:
                    continue
                elif x == 0:
                    matrix[x][y] += matrix[x][y-1]
                elif y == 0:
                    matrix[x][y] += matrix[x-1][y]
                else:
                    matrix[x][y] += (matrix[x][y-1] + matrix[x-1][y])
        return matrix[m-1][n-1]
  • ํŒจํ„ด: Dynamic Programming
  • ์„ค๋ช…: 2์ฐจ์› DP ๋ฐฐ์—ด์„ ์ด์šฉํ•ด ์ขŒํ•˜์—์„œ ์šฐ์ƒ๋กœ์˜ ๊ฒฝ๋กœ ๊ฐœ์ˆ˜๋ฅผ ๋ˆ„์  ํ•ฉ์œผ๋กœ ๊ตฌํ•˜๋Š” ์ „ํ˜•์ ์ธ DP ๋ฌธ์ œ ํ’€์ด์ด๋ฉฐ, ์ด์ „ ์œ„์น˜์˜ ๊ฐ’์„ ํ™œ์šฉํ•ด ํ˜„์žฌ ๊ฐ’์„ ๊ณ„์‚ฐํ•œ๋‹ค.

๐Ÿ“Š ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

๋ณต์žก๋„
Time O(m * n)
Space O(m * n)

ํ”ผ๋“œ๋ฐฑ: 2์ฐจ์› DP ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด ์œ„/์™ผ์ชฝ์˜ ๊ฒฝ๋กœ ์ˆ˜๋ฅผ ํ•ฉ์‚ฐํ•œ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ํ˜„์žฌ ๊ตฌํ˜„์ด ์ ์ ˆํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๐Ÿ’ก ํ’€์ด์— ์‹œ๊ฐ„/๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ฃผ์„์œผ๋กœ ๋‚จ๊ฒจ๋ณด์„ธ์š”!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

1 participant