반응형
Notice
Recent Posts
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Today
Total
관리 메뉴

오식랜드

[알고리즘] 알고리즘이란 본문

dev-log/cs

[알고리즘] 알고리즘이란

개발하는 오식이 2023. 10. 20. 23:52
반응형

알고리즘

문제에 대한 해답을 찾기 위한 체계적인 “문제 해결 절차”

항상 “효율적인 알고리즘”을 고안하는게 중요

최초의 알고리즘 : 유클리드의 최대공약수

알고리즘의 특성

  • 정확성 : 주어진 입력에 대한 올바른 해 도출
  • 수행성 : 각 단계는 컴퓨터에서 수행 가능해야 한다.
  • 유한성 : 무한루프X, 단계를 마친 후 종료되어야 한다.
  • 효율성 : 효율적일수록 가치가 높아진다
    • 효율성의 척도 : 시간 복잡도 / 공간 복잡도

정확한 알고리즘

: 어떠한 입력에 대해서도 답을 출력하면서 멈추는 알고리즘

정확하지 않은 알고리즘

: 어떤 입력에 대하여 멈추지 않거나 틀린 답을 출력하면서 멈추는 알고리즘

문제의 표기 방법

  1. 문제
  2. 파라미터 : 문제에서 특정 값이 주어지지 않은 변수
  3. 문제의 사례 (입력) : 파라미터에 특정 값 지정
  4. 해답 (출력) : 주어진 사례의 질문에 대한 답

문제 표기 예시

  1. 문제 : n개의 원소가 있는 목록 S에 x라는 수가 있는지 알아내어 예/아니오로 답하시오.
  2. 파라미터 : S, n, x
  3. 입력 : S=[1, 4, 6, 9, 12] / n=5 / x=6
  4. 출력 : 예

알고리즘 표기

  1. 자연어 : 한글 또는 영어 ⇒ 거의 사용하지 않음
  2. Pseudo-code (의사 코드)
    • 실제 프로그래밍 언어는 아니지만, 실제 프로그래밍 코드와 비슷하게 과정을 표현
    • 어떤 프로그래밍 언어를 사용하더라도 이해할 수 있는 코드
    • 보통 알고리즘을 표현할 때 주로 사용
  3. Flow Chart
    • 도형과 선으로 과정을 표기
    • 장점 : 한 눈에 잘 보인다.
    • 단점 : 복잡한 프로그램에서는 비효율적이다.

알고리즘의 분석

  • 입력 데이터 크기가 작을 때
    • 알고리즘 효율이 중요하지 않다
  • 입력 데이터가 클 때
    • 알고리즘의 효율성이 굉장히 중요
    • 비효율적인 알고리즘은치명적
    • 점근적 분석 필요
반응형

'dev-log > cs' 카테고리의 다른 글

[알고리즘] 피보나찌 수 구하기  (0) 2023.10.20
[알고리즘] 순차탐색 / 이분탐색  (0) 2023.10.20
[운영체제] 네트워크  (0) 2023.10.01
[운영체제] 파일 시스템  (0) 2023.10.01
[운영체제] 포트 (port)  (0) 2023.10.01
Comments