Two Pointers(ํˆฌํฌ์ธํ„ฐ) — “์–‘์ชฝ์—์„œ ์ขํ˜€๊ฐ€๋ฉฐ O(n)์œผ๋กœ ๋๋‚ด๋Š” ๊ธฐ์ˆ ”

2026. 1. 11. 22:56ยท๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก/๐Ÿคน‍โ™€๏ธAlgorithm & Coding Test๐Ÿ’ƒ

Two Pointers(ํˆฌํฌ์ธํ„ฐ) — “์–‘์ชฝ์—์„œ ์ขํ˜€๊ฐ€๋ฉฐ O(n)์œผ๋กœ ๋๋‚ด๋Š” ๊ธฐ์ˆ ”

์ฝ”ํ…Œ์—์„œ ํˆฌํฌ์ธํ„ฐ๋Š” ์ž์ฃผ ๋“ฑ์žฅํ•˜์ง€๋งŒ, ํ•ต์‹ฌ์€ ๋‹จ์ˆœํ•ด์š”.

ํฌ์ธํ„ฐ(์ธ๋ฑ์Šค) 2๊ฐœ๋ฅผ ์žก๊ณ , ๋‘˜์„ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์›€์ง์ด๋ฉด์„œ ์ •๋‹ต์„ ๋งŒ๋“ ๋‹ค.
๊ทธ๋ž˜์„œ ๋ณดํ†ต **O(n²)**๋กœ ํ’€๋ฆฌ๋˜ ๋ฌธ์ œ๋ฅผ **O(n)**์œผ๋กœ ์ค„์—ฌ์ค๋‹ˆ๋‹ค.

ํˆฌํฌ์ธํ„ฐ๊ฐ€ “์ž˜ ๋จนํžˆ๋Š”” ์ˆœ๊ฐ„์€ ๋”ฑ ํ•˜๋‚˜์˜ ๊ณตํ†ต์ ์ด ์žˆ์–ด์š”.

โœ… ํ•œ ๋ฒˆ ์›€์ง์ธ ํฌ์ธํ„ฐ๊ฐ€ ๋‹ค์‹œ ๋’ค๋กœ ๋Œ์•„๊ฐˆ ํ•„์š”๊ฐ€ ์—†๋„๋ก
์กฐ๊ฑด ํŒ๋‹จ์ด **๋‹จ์กฐ(monotonic)**์—ฌ์•ผ ํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.


1) ํˆฌํฌ์ธํ„ฐ๊ฐ€ ์ž˜ ๋จนํžˆ๋Š” ๋Œ€ํ‘œ ํŒจํ„ด 2๊ฐ€์ง€

ํŒจํ„ด A) ์ •๋ ฌ + ์–‘๋ ์ขํžˆ๊ธฐ (์ง ๋งž์ถ”๊ธฐ / ์ตœ์†Œ ํšŸ์ˆ˜)

ํ‚ค์›Œ๋“œ

  • “์ตœ๋Œ€ 2๊ฐœ์”ฉ ๋ฌถ๊ธฐ”
  • “๋‘ ์ˆ˜์˜ ํ•ฉ์ด limit ์ดํ•˜”
  • “์ตœ์†Œ ๋ณดํŠธ ์ˆ˜ / ์ตœ์†Œ ๊ทธ๋ฃน ์ˆ˜ / ์ตœ๋Œ€ ๋งค์นญ”
  • ์ •๋ ฌํ•˜๋ฉด ๊ฐ€๋Šฅํ•œ์ง€/๋ถˆ๊ฐ€๋Šฅํ•œ์ง€๊ฐ€ ๋‹จ์กฐ๊ฐ€ ๋จ

์ง๊ด€

  • “๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ”์€ ์„ ํƒ์ง€๊ฐ€ ๊ฑฐ์˜ ์—†์Œ → ๋จผ์ € ์ฒ˜๋ฆฌํ•ด์•ผ ํ•จ
  • ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์„ ํƒœ์šธ ๋•Œ, ๊ฐ™์ด ํƒœ์šธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ์„ ๋ถ™์ด๋Š” ๊ฒŒ ์ตœ์„ 
  • ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ๊ณผ๋„ ๊ฐ™์ด ๋ชป ํƒ€๋ฉด → ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ์™€๋„ ๋ชป ํƒ → ํ˜ผ์ž ๋ณด๋‚ด๋Š” ๊ฒŒ ์ตœ์„ 

2) ๋Œ€ํ‘œ ๋ฌธ์ œ: ๊ตฌ๋ช…๋ณดํŠธ(์ตœ์†Œ ๋ณดํŠธ ์ˆ˜)

๋ฌธ์ œ ์š”์•ฝ

  • ๋ณดํŠธ 1๋Œ€์— ์ตœ๋Œ€ 2๋ช…
  • ๋ฌด๊ฒŒ ์ œํ•œ(limit) ์ดˆ๊ณผํ•˜๋ฉด ๊ฐ™์ด ๋ชป ํƒ
  • ๋ชจ๋‘ ๊ตฌ์ถœํ•  ๋•Œ ํ•„์š”ํ•œ ์ตœ์†Œ ๋ณดํŠธ ์ˆ˜

ํ’€์ด ์ „๋žต(๊ทธ๋ฆฌ๋”” + ํˆฌํฌ์ธํ„ฐ)

  1. ๋ชธ๋ฌด๊ฒŒ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
  2. L=๊ฐ€๋ฒผ์šด ์ชฝ, R=๋ฌด๊ฑฐ์šด ์ชฝ ํฌ์ธํ„ฐ
  3. ๋งค๋ฒˆ R(๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ)์€ ๋ณดํŠธ 1๋Œ€ ํ™•์ •
  4. people[L] + people[R] <= limit์ด๋ฉด ๊ฐ™์ด ํƒœ์šฐ๊ณ  L++
  5. R--, ๋ณดํŠธ ์ˆ˜ +1

3) ์ •๋‹ต ์ฝ”๋“œ (Python)

 
def solution(people, limit):
people.sort()
l, r = 0, len(people) - 1
boats = 0
while l <= r: # ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ(r)์€ ๋ฌด์กฐ๊ฑด ํƒœ์šด๋‹ค (๋ณดํŠธ 1๋Œ€ ํ™•์ •)
if people[l] + people[r] <= limit:
l += 1 # ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ๋„ ๊ฐ™์ด ํƒˆ ์ˆ˜ ์žˆ์œผ๋ฉด ๊ฐ™์ด ํƒœ์›€
r -= 1
boats += 1
return boats

4) ์˜ˆ์‹œ๋กœ ์ดํ•ดํ•˜๊ธฐ

people = [70, 50, 80, 50], limit = 100
์ •๋ ฌ → [50, 50, 70, 80]

  • L=50, R=80 → 130 (๋ถˆ๊ฐ€) → 80 ํ˜ผ์ž (boats=1), R--
  • L=50, R=70 → 120 (๋ถˆ๊ฐ€) → 70 ํ˜ผ์ž (boats=2), R--
  • L=50, R=50 → 100 (๊ฐ€๋Šฅ) → ๋‘˜์ด ๊ฐ™์ด (boats=3)

์ •๋‹ต = 3


5) ์™œ ์ด๊ฒŒ ์ตœ์ ์ธ๊ฐ€? (ํ•œ ๋ฌธ์žฅ ์ฆ๋ช… ๋А๋‚Œ)

๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์€ ๋Šฆ๊ฒŒ ์ฒ˜๋ฆฌํ• ์ˆ˜๋ก ํ•จ๊ป˜ ํƒˆ ์ˆ˜ ์žˆ๋Š” ํ›„๋ณด๊ฐ€ ๋” ์ค„์–ด๋“ ๋‹ค.
๊ทธ๋Ÿฌ๋‹ˆ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ๋ถ€ํ„ฐ ํƒœ์šฐ๊ณ , ๊ฐ™์ด ํƒœ์šธ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ์„ ๋ถ™์ด๋Š” ๊ฒƒ์ด ํ•ญ์ƒ ์†ํ•ด๊ฐ€ ์—†๋‹ค.

  • ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์„ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ๊ณผ๋„ ๋ชป ๋ฌถ๋Š”๋‹ค๋ฉด → ๊ทธ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ์™€๋„ ๋ชป ๋ฌถ์Œ
  • ๋ฌถ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด → “๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ”์„ ์“ฐ๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ ์กฐํ•ฉ์„ ๋ง์น˜์ง€ ์•Š์Œ

6) ํˆฌํฌ์ธํ„ฐ๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š” ์ฒดํฌ๋ฆฌ์ŠคํŠธ(์•”๊ธฐ์šฉ)

๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ณด์ด๋ฉด ํˆฌํฌ์ธํ„ฐ๋ฅผ ์˜์‹ฌํ•ด์š”.

  • โœ… ์ •๋ ฌ ํ›„ “์–‘๋์—์„œ ์ขํžˆ๋ฉฐ ์ง์„ ์ง€์–ด ์กฐ๊ฑด ๋งŒ์กฑ”
  • โœ… “ํ•œ ๋ฒˆ์˜ ์Šค์บ”์œผ๋กœ ๋๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํฌ์ธํ„ฐ๊ฐ€ ๋’ค๋กœ ๊ฐˆ ํ•„์š” ์—†์Œ”
  • โœ… “์ตœ๋Œ€/์ตœ์†Œ ๋งค์นญ, ์ตœ์†Œ ํšŸ์ˆ˜” ๊ฐ™์€ ์ตœ์ ํ™” + ์กฐ๊ฑด์ด ๋‹จ์กฐ

7) ๋ค: (์ฃผ์˜) ํˆฌํฌ์ธํ„ฐ๊ฐ€ ์ž˜ ์•ˆ ๋˜๋Š” ์ผ€์ด์Šค

  • ์—ฐ์† ๊ตฌ๊ฐ„ ํ•ฉ ๋ฌธ์ œ์—์„œ ์Œ์ˆ˜๊ฐ€ ์„ž์ด๋ฉด ๋‹จ์กฐ๊ฐ€ ๊นจ์งˆ ์ˆ˜ ์žˆ์–ด์š”.
    (์˜ค๋ฅธ์ชฝ์„ ๋Š˜๋ ธ๋Š”๋ฐ ํ•ฉ์ด ์ค„์–ด๋“ค ์ˆ˜๋„ ์žˆ์–ด์„œ, “์ขํ˜€๊ฐ€๊ธฐ”๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š์Œ)

'๐Ÿ‘ฉโ€๐Ÿ’ปDeveloper ๐Ÿ’ก > ๐Ÿคนโ€โ™€๏ธAlgorithm & Coding Test๐Ÿ’ƒ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

MLA 2์ฃผ์ปท ใ„ฑใ„ฑ!  (0) 2026.01.26
ํŒŒ์ด์ฌ format() ํ•œ ๋ฐฉ์— ๋๋‚ด๊ธฐ: ์ž๋ฆฟ์ˆ˜(0 padding) + ์ด์ง„์ˆ˜ ๋ณ€ํ™˜ + ์‹ค์ „ ์˜ˆ์‹œ(๋น„๋ฐ€์ง€๋„)  (1) 2026.01.19
์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM) ํ•œ ๋ฐฉ์— ๋๋‚ด๊ธฐ: lcm = a*b // gcd(a,b) + ๋ˆ„์   (0) 2026.01.11
์‚ผ์„ฑ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ•ฉ๊ฒฉ์„  ์ •๋ฆฌ (ADV / PRO)  (1) 2026.01.09
'๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก/๐Ÿคน‍โ™€๏ธAlgorithm & Coding Test๐Ÿ’ƒ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • MLA 2์ฃผ์ปท ใ„ฑใ„ฑ!
  • ํŒŒ์ด์ฌ format() ํ•œ ๋ฐฉ์— ๋๋‚ด๊ธฐ: ์ž๋ฆฟ์ˆ˜(0 padding) + ์ด์ง„์ˆ˜ ๋ณ€ํ™˜ + ์‹ค์ „ ์˜ˆ์‹œ(๋น„๋ฐ€์ง€๋„)
  • ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(LCM) ํ•œ ๋ฐฉ์— ๋๋‚ด๊ธฐ: lcm = a*b // gcd(a,b) + ๋ˆ„์ 
  • ์‚ผ์„ฑ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ•ฉ๊ฒฉ์„  ์ •๋ฆฌ (ADV / PRO)
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
Quantitative Research Engineer & Quantitative Strategist | Multimodal Alpha (Price/News/On-chain) | Regime-aware, Cost-included Backtests | Remote-first ์—ฐ๋ฆฌ์˜ ๋‚œ ๋จธ๋‹ˆ๐Ÿ’ฐ๊ฐ€ ์ข‹์•„๐Ÿ’™๐Ÿฅณ ์ถฉ๋งŒํ•˜๊ฒŒ ๊ทธ๋ฆฌ๊ณ  ์ฆ๊ฒ๊ฒŒ ๐Ÿถ ๐Ÿฆซ ๐Ÿ’›
  • fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
    Yeona's Diary
    Quantitative Researcher & Engineer
    AboutMe ๋ชฉํ‘œ GitHub Blog
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐Ÿค ๐Ÿ˜Ž ์•ˆ๋…•โ˜ƒ๏ธ๐Ÿ’ž (103) N
      • ๐Ÿ’™ ๐Ÿค Diary๐Ÿฐ ๐ŸŽ€ ๐Ÿงธ (39) N
        • ๐Ÿ—ฝ๋ฏธ๊ตญ DS & CS ๋ฐ•์‚ฌ ์ด๋ฏผ๐Ÿ‹ (28)
        • ๐Ÿ›ซ์—ฌํ–‰ ์ด์•ผ๊ธฐ (1)
        • ๐Ÿ“’์˜ค๋Š˜ ์ด์•ผ๊ธฐ๐Ÿ’’๐Ÿซง๐ŸŒค๏ธ (6) N
        • ๐Ÿฐโ˜˜๏ธ๐Ÿป‍โ„๏ธ๊ฐ•์•„์ง€ ์œก์•„ (0)
      • ๐ŸฌActuary๐Ÿคธ‍โ™€๏ธโœจ (1)
      • ๐Ÿ‘ฉ‍๐Ÿ’ปDeveloper ๐Ÿ’ก (5) N
        • โš’๏ธ์‚ฝ์งˆ ๊ธฐ๋ก๊ธฐ๐Ÿ“[TIL] (6)
        • ๐Ÿ–ผ๏ธFront-end๐ŸŽจ (3)
        • ๐Ÿ’พBack-end๐Ÿ•Š๏ธ (15)
        • ๐Ÿคน‍โ™€๏ธAlgorithm & Coding Test๐Ÿ’ƒ (5)
        • ๐Ÿ—ปData๐Ÿ”๏ธ (1)
        • ๐Ÿ“Project๐Ÿ• (8) N
      • ๐Ÿ’ฐ๊ฒฝ์ œ์  ์ž์œ  ๋‹ฌ์„ฑโœŒ๏ธ๐ŸคŸ (8)
        • ๐Ÿ“ŠQuant๐Ÿ“ˆ๐Ÿ‘ (4)
        • ๐Ÿฐ๐Ÿ›’๐Ÿฅ‡ (1)
        • ๐Ÿ’Ž ํˆฌ์ž ์‹ค์ „ ๊ฒฝํ—˜ โ˜บ๏ธ (1)
        • ๐Ÿ… Bitcoin 15๊ฐœ ๋ชจ์œผ๊ธฐ : 2040๋…„ 200์–ต+ (0)
        • ๐ŸŒŽ๋ฏธ๊ตญ ์‹œ์žฅ๐Ÿฆ (0)
      • ๐ŸŒค๏ธCloud๐ŸŒค๏ธโ˜๏ธ (2)
        • AWS (1)
        • Kubernetes (0)
        • Google Cloud Professional (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • git
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    DS
    ์‹œ์นด๊ณ 
    Java
    AWS
    CS
    ๋ฏธ๊ตญ์œ ํ•™
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ์‹œ์นด๊ณ ๋Œ€ํ•™๊ต
    ๊ฐ€์„ํ•™๊ธฐ
    ์‹œ์นด๊ณ ๋Œ€
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
fulfilling_enjoyable yeona๐Ÿถ๐Ÿฆซ
Two Pointers(ํˆฌํฌ์ธํ„ฐ) — “์–‘์ชฝ์—์„œ ์ขํ˜€๊ฐ€๋ฉฐ O(n)์œผ๋กœ ๋๋‚ด๋Š” ๊ธฐ์ˆ ”
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”