[πŸ‘‘] κΈ°μˆ λ©΄μ ‘ μ˜ˆμƒμ§ˆλ¬Έ - μ•Œκ³ λ¦¬μ¦˜

또띠·2023λ…„ 12μ›” 4일
0

1. μ‹œκ°„λ³΅μž‘λ„μ™€ κ³΅κ°„λ³΅μž‘λ„κ°€ 무엇인지 μ„€λͺ…ν•΄μ£Όμ‹€ 수 μžˆμ„κΉŒμš”?

μ‹œκ°„ λ³΅μž‘λ„ (Time Complexity)
μ‹œκ°„ λ³΅μž‘λ„λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„μ˜ 양을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 이것은 μž…λ ₯ 크기에 λŒ€ν•œ ν•¨μˆ˜λ‘œ ν‘œν˜„λ˜λ©°, 일반적으둜 "λΉ… 였" ν‘œκΈ°λ²•μ„ μ‚¬μš©ν•˜μ—¬ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, O(n)은 μž…λ ₯ 크기에 λŒ€ν•΄ μ„ ν˜•μ μœΌλ‘œ μ¦κ°€ν•œλ‹€λŠ” 것을 μ˜λ―Έν•˜λ©°, O(log n)은 둜그 μ‹œκ°„μ— λΉ„λ‘€ν•œλ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. 쒋은 μ•Œκ³ λ¦¬μ¦˜μ€ μž‘μ€ μž…λ ₯μ—μ„œλ„ λΉ λ₯΄κ²Œ μ‹€ν–‰λ˜κ³ , μž…λ ₯이 컀져도 효율적으둜 μ²˜λ¦¬ν•  수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

곡간 λ³΅μž‘λ„ (Space Complexity)
곡간 λ³΅μž‘λ„λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ μ‚¬μš©λ˜λŠ” λ©”λͺ¨λ¦¬ 양을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 이것도 μž…λ ₯ 크기에 λŒ€ν•œ ν•¨μˆ˜λ‘œ ν‘œν˜„λ˜λ©°, λΉ… 였 ν‘œκΈ°λ²•μ„ μ‚¬μš©ν•˜μ—¬ ν‘œν˜„λ©λ‹ˆλ‹€. 곡간 λ³΅μž‘λ„λ₯Ό μ΅œμ†Œν™”ν•˜λŠ” 것은 λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 ν™œμš©ν•˜λŠ” μ€‘μš”ν•œ λΆ€λΆ„μž…λ‹ˆλ‹€. 쒋은 μ•Œκ³ λ¦¬μ¦˜μ€ 적은 λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•˜μ—¬ μ›ν•˜λŠ” κ²°κ³Όλ₯Ό 얻을 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

κ°„λ‹¨νžˆ λ§ν•˜λ©΄, μ‹œκ°„ λ³΅μž‘λ„λŠ” μ‹€ν–‰ μ‹œκ°„μ— λŒ€ν•œ 것이고, 곡간 λ³΅μž‘λ„λŠ” λ©”λͺ¨λ¦¬ μ‚¬μš©μ— λŒ€ν•œ κ²ƒμž…λ‹ˆλ‹€.


2. 이뢄탐색이 무엇이고 μ‹œκ°„λ³΅μž‘λ„λŠ” μ–΄λ–»κ²Œ 되며 κ·Έ μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

이뢄탐색은 주둜 μ •λ ¬λœ λ°μ΄ν„°μ—μ„œ μ‚¬μš©λ˜λ©°, 데이터λ₯Ό μ •λ ¬ν•˜λŠ” λ°μ—λŠ” 좔가적인 μ‹œκ°„μ΄ μ†Œμš”λ˜μ§€λ§Œ νƒμƒ‰μ—μ„œ μ–»λŠ” 이점이 더 크기 λ•Œλ¬Έμ— μ •λ ¬λœ λ°μ΄ν„°μ—μ„œ 맀우 μœ μš©ν•©λ‹ˆλ‹€.

μ΄λΆ„νƒμƒ‰μ˜ 원리
λ°°μ—΄μ˜ 쀑간 κ°’κ³Ό 찾고자 ν•˜λŠ” 값을 λΉ„κ΅ν•©λ‹ˆλ‹€.
찾고자 ν•˜λŠ” 값이 쀑간 값보닀 μž‘μœΌλ©΄ 쀑간 κ°’μ˜ μ™Όμͺ½ λ°˜μ„ λŒ€μƒμœΌλ‘œ 이진 탐색을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.
찾고자 ν•˜λŠ” 값이 쀑간 값보닀 크면 쀑간 κ°’μ˜ 였λ₯Έμͺ½ λ°˜μ„ λŒ€μƒμœΌλ‘œ 이진 탐색을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.
찾고자 ν•˜λŠ” 값이 쀑간 κ°’κ³Ό μΌμΉ˜ν•˜λ©΄ μ›ν•˜λŠ” 값을 찾은 κ²ƒμ΄λ―€λ‘œ μ•Œκ³ λ¦¬μ¦˜μ„ μ’…λ£Œν•©λ‹ˆλ‹€.

μ‹œκ°„ λ³΅μž‘λ„
μ΄λΆ„νƒμƒ‰μ˜ μ‹œκ°„ λ³΅μž‘λ„λŠ” O(log n)μž…λ‹ˆλ‹€. μ΄λŠ” 탐색 λ²”μœ„λ₯Ό 반으둜 λ‚˜λˆ„κΈ° λ•Œλ¬Έμ— 탐색 μ‹œκ°„μ΄ 둜그의 ν˜•νƒœλ‘œ κ°μ†Œν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. μ΄λŠ” μ„ ν˜• νƒμƒ‰μ˜ O(n)κ³Ό λΉ„κ΅ν•˜λ©΄ 훨씬 νš¨μœ¨μ μž…λ‹ˆλ‹€. μ΄λŸ¬ν•œ νŠΉμ„±μœΌλ‘œ 인해 이뢄탐색은 λŒ€λŸ‰μ˜ λ°μ΄ν„°μ—μ„œ λΉ λ₯΄κ²Œ νŠΉμ • 값을 찾을 수 μžˆλŠ” κ°•λ ₯ν•œ μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€.


3. μ‹œκ°„λ³΅μž‘λ„κ°€ 높은 경우 μ·¨ν•  수 μžˆλŠ” 일반 μ „λž΅μ„ 3가지 정도 μ„€λͺ…ν•΄μ£Όμ‹€ 수 μžˆμ„κΉŒμš”?

1. λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ° ν™œμš©
μ€‘λ³΅λ˜λŠ” 계산을 ν”Όν•˜κ³  쀑간 κ²°κ³Όλ₯Ό μ €μž₯ν•˜μ—¬ 계산 속도λ₯Ό ν–₯μƒμ‹œν‚€λŠ” λ°©λ²•μž…λ‹ˆλ‹€.
큰 문제λ₯Ό μž‘μ€ λΆ€λΆ„μœΌλ‘œ λ‚˜λˆ„μ–΄ ν‘ΈλŠ”λ°, ν•œλ²ˆ ν‘Ό μž‘μ€ 문제의 해결책을 κΈ°μ–΅ν•˜κ³  μž¬ν™œμš©ν•¨μœΌλ‘œμ¨ 쀑볡 계산을 μ€„μž…λ‹ˆλ‹€.

2. 그리디 μ•Œκ³ λ¦¬μ¦˜ μ‚¬μš©
그리디 μ•Œκ³ λ¦¬μ¦˜μ€ 각 λ‹¨κ³„μ—μ„œ κ°€μž₯ μ΅œμ„ μ˜ 선택을 ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.
주어진 λ¬Έμ œμ— λŒ€ν•΄ 항상 ν˜„μž¬ μƒνƒœμ—μ„œ κ°€μž₯ μ΅œμ„ μ˜ 선택을 ν•˜λŠ” 그리디 μ „λž΅μ„ μ μš©ν•˜λ©΄, μ „μ²΄μ μœΌλ‘œ 졜적의 ν•΄λ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

3. 데이터 ꡬ쑰 μ΅œμ ν™”
μ μ ˆν•œ 데이터 ꡬ쑰와 선택은 μ•Œκ³ λ¦¬μ¦˜ μ„±λŠ₯에 큰 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€.
νŠΉμ • μž‘μ—…μ— 효율적인 자료 ꡬ쑰λ₯Ό μ‚¬μš©ν•˜λ©΄ μ•Œκ³ λ¦¬μ¦˜μ˜ μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, ν•΄μ‹œ ν…Œμ΄λΈ”μ΄λ‚˜ νž™ 같은 자료 ꡬ쑰λ₯Ό 적절히 μ‚¬μš©ν•˜λ©΄ 일뢀 λ¬Έμ œμ—μ„œ λΉ λ₯Έ 속도λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

상황에 따라 μ‘°ν•©ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 것이 μ€‘μš”ν•˜λ©°, μ½”λ“œμ˜ 가독성과 μœ μ§€λ³΄μˆ˜μ„±μ„ κ³ λ €ν•˜μ—¬ μ΅œμ ν™”λ₯Ό μ§„ν–‰ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.


4. κ³΅κ°„λ³΅μž‘λ„κ°€ 높은 경우 μ·¨ν•  수 μžˆλŠ” 일반 μ „λž΅μ„ 3가지 정도 μ„€λͺ…ν•΄μ£Όμ‹€ 수 μžˆμ„κΉŒμš”?

1. 데이터 μ••μΆ• ν™œμš©
데이터λ₯Ό μ••μΆ•ν•˜μ—¬ μ €μž₯ν•˜λ©΄ λ©”λͺ¨λ¦¬λ₯Ό 효과적으둜 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄, νŠΉμ • ν˜•μ‹μ˜ λ°μ΄ν„°μ—μ„œ μ€‘λ³΅λ˜λŠ” 뢀뢄을 μ°Ύμ•„λ‚΄κ³  이λ₯Ό μ••μΆ•ν•˜μ—¬ μ €μž₯ν•¨μœΌλ‘œμ¨ λ©”λͺ¨λ¦¬ μ‚¬μš©μ„ μ΅œμ†Œν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. 데이터 ꡬ쑰 μ΅œμ ν™”
μ μ ˆν•œ 데이터 ꡬ쑰의 선택은 곡간 λ³΅μž‘λ„μ— 큰 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€.
ν•„μš”ν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜λŠ”λ° μ΅œμ†Œν•œμ˜ λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” 자료 ꡬ쑰λ₯Ό μ„ νƒν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, νŠΈλ¦¬λ‚˜ ν•΄μ‹œλ§΅μ€ νŠΉμ • μƒν™©μ—μ„œ λ©”λͺ¨λ¦¬λ₯Ό 효율적으둜 ν™œμš©ν•  수 μžˆλŠ” 자료 κ΅¬μ‘°μž…λ‹ˆλ‹€.

3. λΉ„νŠΈ μ—°μ‚° ν™œμš©
λΉ„νŠΈ 연산을 톡해 데이터λ₯Ό 효과적으둜 μ••μΆ•ν•˜κ±°λ‚˜ ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
λΉ„νŠΈ 연산을 μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ 가지 정보λ₯Ό ν•˜λ‚˜μ˜ λ³€μˆ˜μ— 효과적으둜 μ €μž₯ν•˜λ©΄ 곡간을 μ ˆμ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 특히 λŒ€λŸ‰μ˜ 데이터λ₯Ό λ‹€λ£° λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

profile
✨ π‘¬π’—π’†π’“π’šπ’•π’‰π’Šπ’π’ˆ π’„π’π’Žπ’†π’” 𝒕𝒐 π’‰π’Šπ’Ž π’˜π’‰π’ 𝒉𝒖𝒔𝒕𝒍𝒆𝒔 π’˜π’‰π’Šπ’π’† 𝒉𝒆 π’˜π’‚π’Šπ’•π’”. ✨

0개의 λŒ“κΈ€