ν”Όλ“œλ‘œ λŒμ•„κ°€κΈ°
πŸš€ How to Solve Arrays and Hashing Problems in Data Structure?
Dev.toDev.to
Backend

Hashing λ„μž…μ„ ν†΅ν•œ μ‹œκ°„ λ³΅μž‘λ„ O(nΒ²)μ—μ„œ O(n)으둜의 μ΅œμ ν™” μ „λž΅

πŸš€ How to Solve Arrays and Hashing Problems in Data Structure?

Somnath Das2026λ…„ 5μ›” 10일3λΆ„beginner

Context

λ°°μ—΄ 기반 데이터 처리 μ‹œ λ‹¨μˆœ 순회 및 쀑볡 νƒμƒ‰μœΌλ‘œ μΈν•œ μ„±λŠ₯ μ €ν•˜ λ°œμƒ. 특히 데이터 규λͺ¨ 증가에 따라 Brute force λ°©μ‹μ˜ μ‹œκ°„ λ³΅μž‘λ„κ°€ κΈ°ν•˜κΈ‰μˆ˜μ μœΌλ‘œ μ¦κ°€ν•˜λŠ” ν•œκ³„ 쑴재.

Technical Solution

  • Hashing ꡬ쑰λ₯Ό ν™œμš©ν•œ Key-Value λ§€ν•‘μœΌλ‘œ μš”μ†Œ 탐색 μ‹œκ°„μ„ μƒμˆ˜λ‘œ 단좕
  • Two-pointer 및 Sliding Window 기법을 μ μš©ν•œ 효율적인 λ°°μ—΄ Traversal 섀계
  • Complement 계산 방식을 ν†΅ν•œ 단일 루프 λ‚΄ Pair 탐색 둜직 κ΅¬ν˜„
  • Prefix Sum μ΅œμ ν™”λ‘œ λΆ€λΆ„ λ°°μ—΄ 합계 κ³„μ‚°μ˜ μ‹œκ°„ λ³΅μž‘λ„ κ°μ†Œ
  • unordered_map 및 unordered_set을 ν†΅ν•œ 고속 Lookup 및 쀑볡 제거 λ©”μ»€λ‹ˆμ¦˜ ꡬ좕

Impact

  • μ‹œκ°„ λ³΅μž‘λ„: O(nΒ²) β†’ O(n)으둜 κ°œμ„ 
  • 곡간 λ³΅μž‘λ„: O(n) μΆ”κ°€ 할당을 ν†΅ν•œ 탐색 μ„±λŠ₯ κ·ΉλŒ€ν™”

Key Takeaway

λ°μ΄ν„°μ˜ λΉˆλ„μˆ˜ μΈ‘μ •μ΄λ‚˜ λΉ λ₯Έ 검색이 ν•„μš”ν•œ 경우 곡간 λ³΅μž‘λ„λ₯Ό ν¬μƒν•˜μ—¬ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό μ΅œμ ν™”ν•˜λŠ” Trade-off μ „λž΅μ˜ μ€‘μš”μ„± 확인.


1. 'Frequency', 'Duplicate', 'Fast Lookup' ν‚€μ›Œλ“œ 식별 μ‹œ HashMap/HashSet μš°μ„  κ²€ν† 

2. Brute force μ ‘κ·Όλ²•μœΌλ‘œ 둜직 검증 ν›„ μ‹œκ°„/곡간 λ³΅μž‘λ„ 뢄석을 ν†΅ν•œ μ΅œμ ν™” 단계 적용

3. 문제 νŒ¨ν„΄μ— λ”°λ₯Έ Two-pointer, Sliding Window, Prefix Sum 적용 κ°€λŠ₯μ„± νŒλ‹¨

원문 읽기