알고리즘

2023. 4. 26. 15:25·컴퓨터 기초/컴퓨팅사고
반응형

알고리즘

  • 분해, 패턴인식, 추상화 과정을 통해 명확해진 문제들을 문제를 해결 순서대로 나열하는 것
  • 자연어, 순서도, 의사코드

라면 제조

  • 구체적으로 얼마만큼 값을 제공해야하는지 명확하게 설명해야함

사람이 이해할 수 있는 언어로 작성

  • 컴퓨터로 실행하고자 한다면 알고리즘을 컴퓨터가 이해할 수 있는 언어로 바꿔야함

알고리즘의 조건

  • 순차성 : 올바른 순서대로 진행되어야함
  • 명확성 : 명령어는 명확해야함
  • 유효성 : 실행가능한 연산이어야 함
  • 유한성 : 한정된 수의 명령어가 실행된 후에는 반드시 종료되어야 함
  • 효율성 : 가장 효율적인 방법으로 문제를 해결해야함

오름차순으로 나열하기

컴퓨터는 한번에 여러개를 비교할 수 없음

그래서 하나하나 계산해야함

수가 8,5,12,3이 있을때 순서대로 정렬하기 위해서 사람은 바로 최솟값이 3인걸 알지만 컴퓨터는 한번에 못찾음

  1. 최솟값을 저장하는 공간을 두고, 맨 처음의 수를 최솟값에 저장해둠
  1. 그 다음 값과 최솟값의 값을 비교해서 더 작은 값을 최솟값에 다시 저장함
  1. 반복해서 주어진 배열을 모두 돌아서, 최솟값을 찾아냄

이렇게 해서 최소값을 하나 찾아내는거임

그리고 이후 두 번째 값부터 1~3까지 다시 반복함

계속 반복하면 3,5,8,12라는 순서로 정렬되게 됨

최솟값을 찾아 순서대로 나열하는 방법→ 선택 정렬

4개에서 최솟값찾는것

3개에서 최솟값 찾는것

2개에서 최솟값 찾는것이 패턴이 됨

정렬문제에 대한 고찰

  • 사람은 4개의 숫자를 한번에 파악가능
  • 그러나 정렬 방법이나 과정을 설명하기 어려움
  • 알고리즘은 복잡한 단계를 반복적으로 실행해서 어렵게 결과를 도출한다.
  • 방법과 과정을 명확하게 설명할 수 있다.

많은 숫자를 정렬하려면

  • 사람의 방법으로는 하기 어렵다.
  • 위의 알고리즘을 따라하면 많은 단계를 거치지만 정렬이 가능해진다.
  • 컴퓨터로 알고리즘을 변환하여 실행하면? → 단순하고 많은 반복단계를 매우 빠르게 실행

특정한 값 찾기

  • 찾을 대상이 속한 배열이 정렬이 되어있는 경우 더 빠르게 찾을 수 있다.
  • 배열의 가운데값을(5개라면 3번째 값 평균값이나 중간값이 아님)기준으로 큰가 작은가 비교
  • 크면 작은값들을 제외함
  • 작으면 큰값들을 제외함
  • 반복

이진탐색(Binary search)

가장 효율적인 방법은?

  • 비교 횟수를 최소로 하는 알고리즘
  • 처음부터 차례로 비교하는 경우 최대 1000개 비교 평균 500번 비교
  • 중간 값을 비교하여 범위를 좁혀가는 경우 최대 log2 1000번 10번

컴퓨터 알고리즘이라는 과목에서 자세하게 알게됨


Uploaded by N2T

반응형

'컴퓨터 기초 > 컴퓨팅사고' 카테고리의 다른 글

분해, 패턴인식  (1) 2023.04.26
컴퓨팅사고를 활용한 문제 해결  (0) 2023.04.26
컴퓨팅 사고의 문제인식과 해결  (0) 2023.04.26
컴퓨터의 구조  (1) 2023.04.26
컴퓨터의 동작과 이해(1)  (0) 2023.04.26
'컴퓨터 기초/컴퓨팅사고' 카테고리의 다른 글
  • 분해, 패턴인식
  • 컴퓨팅사고를 활용한 문제 해결
  • 컴퓨팅 사고의 문제인식과 해결
  • 컴퓨터의 구조
cvcvcx9
cvcvcx9
프로그래머
  • cvcvcx9
    참치와 연어가 좋아
    cvcvcx9
  • 전체
    오늘
    어제
    • 전체보기 (90)
      • JAVA (22)
        • 웹 프로그래밍 딥하게 파보기 (7)
        • String (2)
        • 자바의 다양한 객체 (3)
        • 클래스와 인터페이스, 추상클래스 (2)
        • 컬렉션과 자료구조 (6)
        • 제네릭 (0)
      • SPRING (3)
      • JPA 게시판 (19)
        • JPA게시판 만들기 (7)
        • JPA (10)
        • Spring Security (2)
        • 오류정리 (0)
      • 코딩테스트 준비 (4)
        • 자료구조 (3)
      • Python (21)
        • Django (21)
      • 컴퓨터 기초 (8)
        • 컴퓨팅사고 (7)
      • Web (7)
        • 유용한 설정 (6)
        • Git 관련 (1)
      • 데이터베이스 (1)
        • 친절한 SQL튜닝 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 인기 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
cvcvcx9
알고리즘
상단으로

티스토리툴바