less than 1 minute read

πŸ“˜ Two Pointer μ•Œκ³ λ¦¬μ¦˜μ΄λž€

λ‹€μŒμ€ Two Pointer의 사전적 μ •μ˜μ΄λ‹€.

두 개의 포인터λ₯Ό μ‚¬μš©ν•΄ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜

투 포인터 μ•Œκ³ λ¦¬μ¦˜μ€ λ¦¬μŠ€νŠΈλ‚˜ 배열에 μ ‘κ·Όν•  λ•Œ, 2개의 ν¬μΈν„°μ˜ μœ„μΉ˜λ₯Ό κΈ°λ‘ν•˜λ©΄μ„œ μ²˜λ¦¬ν•˜λŠ μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€.
보톡 S(Start), E(End)와 같은 λ°©μ‹μœΌλ‘œ 이름을 뢙인닀.

λ‹€μŒμ€ Two Pointer와 κ΄€λ ¨λœ κ°„λ‹¨ν•œ μ˜ˆμ‹œμ΄λ‹€.


πŸ“– Two Pointer μ˜ˆμ‹œ

Two Pointer와 κ΄€λ ¨λœ κ°„λ‹¨ν•œ 문제λ₯Ό μ•Œμ•„λ³΄μž


λ‹€μŒκ³Ό 같이 5개의 재료λ₯Ό μ£Όκ³ , μ°¨κ°€ 2라고 ν•˜μž.
λ‹¨μˆœν•˜κ²Œ 이것을 뽑아내기 μœ„ν•΄μ„œλŠ” 처음 5와 λ‚˜λ¨Έμ§€ 4개λ₯Ό λΉ„κ΅ν•œ ν›„, 2도 λ‚˜λ¨Έμ§€μ™€ λΉ„κ΅ν•˜λŠ” μ™„μ „ 탐색을 ν•΄μ•Όν•œλ‹€.

image

ν•˜μ§€λ§Œ 이 배열을 λ‹€μŒκ³Ό 같이 정렬을 ν•œ ν›„, S의 값을 μ¦κ°€μ‹œν‚€λ©΄μ„œ μ°¨κ°€ 2κ°€ 될 λ•ŒκΉŒμ§€ μ¦κ°€μ‹œν‚¨λ‹€.

image

image

image

이후 μ°¨κ°€ 2보닀 컀지면 E의 값을 μ¦κ°€μ‹œν‚¨λ‹€.

image

이후 λ‹€μ‹œ 2κ°€λ˜λ©΄ 이λ₯Ό λ°˜λ³΅ν•˜λ©΄μ„œ μ°Ύμ•„λ‚΄λŠ” 방식이닀.


μ΄λŸ¬ν•œ Two Pointer방식은 Sκ°€ μ²˜μŒλΆ€ν„° λκΉŒμ§€, Eκ°€ μ²˜μŒλΆ€ν„° λκΉŒμ§€ κ°€λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ―€λ‘œ μ™„μ „νƒμƒ‰μ˜ O(n^2)에 λΉ„ν•΄ O(2n)μ •λ„λ‘œ 맀우 μ€„μ–΄λ“€κ²Œ λœλ‹€.


πŸ”— κ΄€λ ¨ μ˜ˆμ‹œ

tag:Two Pointer



개인 곡뢀 기둝용 λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
ν‹€λ¦¬κ±°λ‚˜ 였λ₯˜κ°€ μžˆμ„ 경우 μ œλ³΄ν•΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.😁