본문 바로가기

CS/Algorithm

알고리즘의 개요

알고리즘이란?

  • 주어진 문제를 해결하기 위한 잘 정의된 동작들의 유한 집합
  • 어떤 작업을 수행하기 위해 입력을 받아 원하는 출력을 만들어내는 과정을 기술한 것
  • 문제를 풀거나 작업을 수행하기 위한 단계적인 방법

 

자료구조와 알고리즘의 차이점

  • 알고리즘 : 문제 해결의 방법을 정의
  • 자료구조 : 행위의 객체(무엇을)

 

알고리즘을 사용하는 이유

  1. 효율성 - 성능과 가장 연관이 있다. (code size를 작게 한다.)
  2. 추상화 - 중요한 기능들을 사용자들로부터 보지 못하게 한다. (숨긴다.)
  3. 재사용성 - 문맥을 자유롭게 재사용 가능하다.
  4. 모듈화

 

알고리즘으로 어떤 문제를 푸는가?

  • 네비게이션 시스템
    • 두 지점 간의 최단 경로 검색
    • 최단 시간이 걸리는 경로 검색
  • 인터넷 검색
    • 원하는 결과를 최대한 빨리, 최대한 만족스럽게 제공

 

기본 문법

  1. sequence : 순차 실행
  2. Decision : 조건
  3. Repetition : 반복 (성능을 결정하는 가장 중요한 부분)

 

알고리즘의 표현 방법

  1. 순서도 (flow chart)
    • 알고리즘을 그림으로 표현한 것
  2. 의사 코드 (pseudo-code)
    •  알고리즘을 영어와 비슷한 자연어로 표현한 것

순서도의 장단점

  • 장점 : 그림으로 표현을 해 사람들이 시각적으로 이해하기 쉽다.
  • 단점 : 그림으로 그리다 보니 작성하는 데 시간이 많이 걸린다.

의사 코드의 장단점

  • 장점 : 알고리즘을 작성하는 데 시간이 조금 걸린다.
  • 단점 : 작성하는 사람마다 다르게 작성하기 때문에 이해하기가 어렵다.

대부분의 경우 의사 코드로 작성을 하고 중요한 부분은 오해의 소지가 없도록 순서도를 사용하여 작성