Home > Backend > AnD > πŸ“¦[DS,Algorithm] μ•Œκ³ λ¦¬μ¦˜(Algorithm)

πŸ“¦[DS,Algorithm] μ•Œκ³ λ¦¬μ¦˜(Algorithm)
DataStructure Algorithm

1️⃣ μ•Œκ³ λ¦¬μ¦˜(Algorithm).

μ•Œκ³ λ¦¬μ¦˜(Algorithm)은 주어진 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 일련의 λͺ…ν™•ν•œ λ‹¨κ³„λ‘œ κ΅¬μ„±λœ μ ˆμ°¨λ‚˜ 방법을 μ˜λ―Έν•©λ‹ˆλ‹€.

μ‰½κ²Œ 말해, μ•Œκ³ λ¦¬μ¦˜μ€ 문제 해결을 μœ„ν•œ 일련의 κ·œμΉ™ λ˜λŠ” μ§€μΉ¨μž…λ‹ˆλ‹€.

1️⃣ μ•Œκ³ λ¦¬μ¦˜(Algorithm)의 μ •μ˜.

μ•Œκ³ λ¦¬μ¦˜μ€ λ‹€μŒκ³Ό 같은 μš”μ†Œλ₯Ό κ°–μΆ˜ 절차λ₯Ό λ§ν•©λ‹ˆλ‹€.

  1. μž…λ ₯(Input) : μ•Œκ³ λ¦¬μ¦˜μ΄ μ²˜λ¦¬ν•  ν•˜λ‚˜ μ΄μƒμ˜ 값이 μ£Όμ–΄μ§‘λ‹ˆλ‹€.

  2. 좜λ ₯(Output) : μ•Œκ³ λ¦¬μ¦˜μ˜ μˆ˜ν–‰ 결과둜 ν•˜λ‚˜ μ΄μƒμ˜ 값이 μƒμ„±λ©λ‹ˆλ‹€.

  3. λͺ…ν™•μ„±(Definiteness) : 각 λ‹¨κ³„λŠ” λͺ…ν™•ν•˜κ²Œ μ •μ˜λ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. λͺ¨ν˜Έν•œ λΆ€λΆ„ 없이 λͺ…ν™•ν•œ 지침이어야 ν•©λ‹ˆλ‹€.

  4. μœ ν•œμ„±(Finiteness) : μ•Œκ³ λ¦¬μ¦˜μ€ μœ ν•œν•œ 단계 λ‚΄μ—μ„œ μ’…λ£Œλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 즉, μ•Œκ³ λ¦¬μ¦˜μ€ λ¬΄ν•œνžˆ μ‹€ν–‰λ˜μ§€ μ•Šκ³ , ν•œμ •λœ 단계 λ‚΄μ—μ„œ λλ‚˜μ•Ό ν•©λ‹ˆλ‹€.

  5. μœ νš¨μ„±(Effectiveness) : μ•Œκ³ λ¦¬μ¦˜μ˜ λͺ¨λ“  λ‹¨κ³„λŠ” μ‹€μ œλ‘œ μˆ˜ν–‰ κ°€λŠ₯ν•΄μ•Ό ν•˜λ©°, μ‚¬λžŒμ΄ 직접 μˆ˜ν–‰ν•  수 μžˆμ„ μ •λ„λ‘œ 기본적인 μ—°μ‚°μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€.

2️⃣ μ•Œκ³ λ¦¬μ¦˜μ˜ νŠΉμ„±

μ•Œκ³ λ¦¬μ¦˜μ€ λ‹€μŒκ³Ό 같은 νŠΉμ„±μ„ κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

  1. μ •ν™•μ„±(Correctness) : μ•Œκ³ λ¦¬μ¦˜μ€ μ˜¬λ°”λ₯Έ κ²°κ³Όλ₯Ό 생성해야 ν•©λ‹ˆλ‹€.

  2. μ‹œκ°„ λ³΅μž‘λ„(Time Complexity) : μ•Œκ³ λ¦¬μ¦˜μ΄ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 κ±Έλ¦¬λŠ” μ‹œκ°„μž…λ‹ˆλ‹€. 일반적으둜 크기에 λŒ€ν•œ ν•¨μˆ˜λ‘œ ν‘œν˜„λ©λ‹ˆλ‹€.

  3. 곡간 λ³΅μž‘λ„(Space Complexity) : μ•Œκ³ λ¦¬μ¦˜μ΄ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” λ©”λͺ¨λ¦¬ μ–‘μž…λ‹ˆλ‹€. 이 λ˜ν•œ μž…λ ₯ 크기에 λŒ€ν•œ ν•¨μˆ˜λ‘œ ν‘œν˜„λ©λ‹ˆλ‹€.

  4. νš¨μœ¨μ„±(Efficiency) : μ•Œκ³ λ¦¬μ¦˜μ΄ 주어진 μžμ›μ„ μ–Όλ§ˆλ‚˜ 효율적으둜 μ‚¬μš©ν•˜λŠ”μ§€ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. μ—¬κΈ°μ—μ„œλŠ” μ‹œκ°„ λ³΅μž‘λ„μ™€ 곡간 λ³΅μž‘λ„κ°€ ν¬ν•¨λ©λ‹ˆλ‹€.

  5. ν™•μž₯μ„±(Scalability) : μ•Œκ³ λ¦¬μ¦˜μ΄ μž…λ ₯ 크기에 따라 μ–Όλ§ˆλ‚˜ 잘 λ™μž‘ν•˜λŠ”μ§€ λ‚˜νƒ€λƒ…λ‹ˆλ‹€. ν™•μž₯μ„± μžˆλŠ” μ•Œκ³ λ¦¬μ¦˜μ€ 큰 μž…λ ₯ ν¬κΈ°μ—μ„œλ„ 효율적으둜 μž‘λ™ν•©λ‹ˆλ‹€.

3️⃣ μ•Œκ³ λ¦¬μ¦˜μ˜ μ€‘μš”μ„±.

μ•Œκ³ λ¦¬μ¦˜(Algorithm)은 컴퓨터 κ³Όν•™ 및 ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 핡심적인 역할을 ν•©λ‹ˆλ‹€.

효율적인 μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜λ©΄ 컴퓨터 ν”„λ‘œκ·Έλž¨μ΄ 더 λΉ λ₯΄κ³  적은 μžμ›μ„ μ‚¬μš©ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ μ•Œκ³ λ¦¬μ¦˜μ€ 문제 ν•΄κ²°μ˜ 논리적이고 체계적인 μ ‘κ·Ό 방식을 μ œκ³΅ν•˜μ—¬ λ³΅μž‘ν•œ 문제λ₯Ό λ‹¨μˆœν™”ν•˜κ³  ν•΄κ²°ν•˜λŠ” 데 도움을 μ€λ‹ˆλ‹€.

μ•Œκ³ λ¦¬μ¦˜μ„ 잘 μ΄ν•΄ν•˜κ³  μ‚¬μš©ν•˜λŠ” 것은 ν”„λ‘œκ·Έλž˜λ¨Έμ™€ 컴퓨터 κ³Όν•™μžμ—κ²Œ ν•„μˆ˜μ μΈ κΈ°μˆ μž…λ‹ˆλ‹€.
이λ₯Ό 톡해 λ‹€μ–‘ν•œ 문제λ₯Ό 효율적으둜 ν•΄κ²°ν•˜κ³ , 더 λ‚˜μ€ μ†Œν”„νŠΈμ›¨μ–΄μ™€ μ‹œμŠ€ν…œμ„ 섀계할 수 μžˆμŠ΅λ‹ˆλ‹€.