Skip to content

[njngwn] WEEK 08 Solutions - #2823

Open
njngwn wants to merge 3 commits into
DaleStudy:mainfrom
njngwn:week08
Open

[njngwn] WEEK 08 Solutions#2823
njngwn wants to merge 3 commits into
DaleStudy:mainfrom
njngwn:week08

Conversation

@njngwn

@njngwn njngwn commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

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

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

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

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

Important

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

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

@github-actions github-actions Bot added the py label Aug 16, 2026
@njngwn njngwn self-assigned this Aug 16, 2026
@dalestudy

dalestudy Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

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

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

๋ฌธ์ œ ๋‚œ์ด๋„ ์œ ํ˜• ๋ถ„์„
longest-repeating-character-replacement Medium โœ… ์˜๋„ํ•œ ์œ ํ˜•
palindromic-substrings Medium โœ… ์˜๋„ํ•œ ์œ ํ˜•
reverse-bits Easy โœ… ์˜๋„ํ•œ ์œ ํ˜•

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

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

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

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

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

๐Ÿ”ข API ์‚ฌ์šฉ๋Ÿ‰ (gpt-5-nano)
์š”์ฒญ ์ž…๋ ฅ ํ† ํฐ ์ถœ๋ ฅ ํ† ํฐ ํ•ฉ๊ณ„ ๋น„์šฉ
1 731 93 824 $0.000074
2 1,117 125 1,242 $0.000106
ํ•ฉ๊ณ„ 1,848 218 2,066 $0.000180

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-repeating-character-replacement/njngwn.py
class Solution:
    # Time Complexity: O(n), n: len(s)
    # Space Complexity: O(1)
    def characterReplacement(self, s: str, k: int) -> int:
        count = [0] * 26
        max_len, max_cnt = 0, 0
        left = 0

        for right in range(len(s)):  # window expands
            ch = ord(s[right]) - ord('A')
            count[ch] += 1
            max_cnt = max(max_cnt, count[ch])

            # len(substring) - len(most frequent character) > k => window needs to schrink
            if (right - left + 1) - max_cnt > k:
                count[ord(s[left]) - ord('A')] -= 1
                left += 1

            max_len = max(max_len, right - left + 1)

        return max_len
  • ํŒจํ„ด: Sliding Window, Greedy
  • ์„ค๋ช…: ๊ณ ์ •๋œ ์œˆ๋„์šฐ ํฌ๊ธฐ๋กœ ๋ฌธ์ž ๋นˆ๋„์ˆ˜๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ, ์œˆ๋„์šฐ๋ฅผ ํ™•์žฅ/์ถ•์†Œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ตœ๋Œ€๋กœ ๊ธธ์ด๋ฅผ ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ์‹์€ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์ตœ๋Œ€ํ™”ํ•˜๋Š” ๊ทธ๋ฆฌ๋””์  ์•„์ด๋””์–ด์™€ ์—ฐ๊ณ„๋œ๋‹ค.

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

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

ํ”ผ๋“œ๋ฐฑ: ์•ŒํŒŒ๋ฒณ 26๊ฐœ ์นด์šดํŠธ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์œˆ๋„์šฐ์˜ ๊ฐ ๋ฌธ์ž ์ถœํ˜„์„ ์ถ”์ ํ•œ๋‹ค. ์ตœ๋Œ€ ๋นˆ๋„์ˆ˜๋ฅผ ๊ฐฑ์‹ ํ•˜๋ฉฐ ์œˆ๋„์šฐ๋ฅผ ํ™•์žฅ/์ถ•์†Œํ•œ๋‹ค.

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

Comment thread reverse-bits/njngwn.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.

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

reverse-bits/njngwn.py
class Solution:
    # Time Complexity: O(1)
    # Space Complexity: O(1)
    def reverseBits(self, n: int) -> int:
        stack = []
        for i in range(32):
            stack.append(n % 2)
            n //= 2

        res, multiples = 0, 1
        while stack:
            res += (stack.pop() * multiples)
            multiples *= 2

        return res
  • ํŒจํ„ด: Stack
  • ์„ค๋ช…: ์ฃผ์–ด์ง„ ์ฝ”๋“œ๋Š” ๋น„ํŠธ๋ฅผ ์Šคํƒ์— ์ฐจ๋ก€๋กœ ๋„ฃ๊ณ (pop) ๋‹ค์‹œ ๊บผ๋‚ด๋ฉฐ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘์–ด ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค. ๋น„ํŠธ ์—ญ์ˆœ์„ ์–ป๊ธฐ ์œ„ํ•ด ์Šคํƒ ํ™œ์šฉ ํŒจํ„ด์ด ์ ์šฉ๋˜๋ฏ€๋กœ Stack ํŒจํ„ด์— ํ•ด๋‹นํ•œ๋‹ค.

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

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

ํ”ผ๋“œ๋ฐฑ: ๋น„ํŠธ๋ฅผ ์Šคํƒ์— ์ €์žฅํ•œ ๋’ค ์—ญ์ˆœ์œผ๋กœ ํ•ฉ์น˜๋Š” ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„์ด๋‹ค. ์ƒ์ˆ˜ ํฌ๊ธฐ์˜ ๊ณ ์ •๋œ ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ์ฝ”๋“œ์˜ ์˜๋„๋ฅผ ๋” ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ๋น„ํŠธ ์—ฐ์‚ฐ ๊ธฐ๋ฐ˜์˜ ํ’€์ด๋กœ๋„ ๋Œ€์ฒดํ•˜๋ฉด ์ž์ฃผ ์š”๊ตฌ๋˜๋Š” ์ตœ์ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

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.

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

palindromic-substrings/njngwn.py
class Solution:
    # Time Complexity: O(n^2), n: len(s)
    # Space Complexity: O(1)
    def countSubstrings(self, s: str) -> int:
        cnt = 0

        for i in range(len(s)):
            # odd number
            start, end = i, i
            while start >= 0 and end < len(s) and s[start] == s[end]:
                start -= 1
                end += 1
                cnt += 1

            # even number
            start, end = i, i + 1
            while start >= 0 and end < len(s) and s[start] == s[end]:
                start -= 1
                end += 1
                cnt += 1

        return cnt
  • ํŒจํ„ด: Two Pointers, Monotonic Stack, Dynamic Programming
  • ์„ค๋ช…: ๊ฐ€์žฅ์ž์–ด ํ™•์žฅ์œผ๋กœ ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ํ™•์žฅํ•ด๊ฐ€๋ฉฐ ๋”ํ•ด๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ(start, end)๋ฅผ ๊ฐ€์šด๋ฐ์—์„œ ์–‘์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ํŒจํ„ด์ด ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ค‘์‹ฌ์—์„œ ํŒฐ๋ฆฐ๋“œ๋กฌ์„ ํƒ์ƒ‰ํ•˜๋Š” 'Two Pointers' ์‘์šฉ์ด๊ณ , ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

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

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

ํ”ผ๋“œ๋ฐฑ: ๊ฐ ์œ„์น˜๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ™•์žฅํ•˜๋ฉฐ ๋Œ€์นญ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋ฏ€๋กœ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์ „์ฒด ๋ฌธ์ž์—ด ๊ธธ์ด์— ๋Œ€ํ•ด ๋‘ ๋ฒˆ์˜ ํ™•์žฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์„  ์ œ์•ˆ: ํ˜„์žฌ ๊ตฌํ˜„์ด ์ผ๋ฐ˜์ ์ธ ํ™•์žฅ ๋ฐฉ์‹์œผ๋กœ ์ถฉ๋ถ„ํžˆ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

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