[C언어로 쉽게 풀어쓴 자료구조] 1.1 자료구조와 알고리즘

2023. 8. 8. 18:07·공부/자료구조 | 알고리즘

자료구조 복습

 

교재 : c언어로 쉽게 풀어쓴 자료구조 (개정 3판) - 청인국, 공용해, 하상호 지음

 

 

1.1 자료구조와 알고리즘

 

자료구조란?

 

컴퓨터 프로그램 구성 : 

"프로그램 = 자료구조 + 알고리즘"

 

- 자료 구조 (data structure) : 프로그램에서 자료들을 정리하여 보관허는 여러 가지 구조들 

- 알고리즘 (algorithm) : 주어진 문제를 처리하는 절차

 

  • 자료구조와 알고리즘은 밀접한 관계.
  • 자료구조가 결정되면 그 자료구조에서 사용할 수 있는 알고리즘이 결정됨.
  • 컴퓨터가 복잡한 자료들을 빠르게 저장, 검색, 분석, 전송, 갱신하기 위해서는 자료구조가 효율적으로 조직화되어 있어야 하고, 각 응용에 가장 적합한 자료구조와 알고리즘을 선택해야 함. 

 

예 : 

#define MAX_ELEMENTS 100
int scores[MAX_ELEMENTS];	// 자료구조

ing get_max_score(int n)	// 학생의 숫자는 n
{
	int i, largest;
    largest = scores[0];	// 알고리즘
    for(i = 1; i < n; i++) {
    	if (scores[i] > largest) {
        	largest = scores[i];
        }
    }
	return largest;
}

자료구조 : 배열 scores

알고리즘 : 변수 largest를 첫 번째 요소로 초기화하고 나머지 요소들과 순차적으로 비교하는 것

 

 

알고리즘이란?

알고리즘 (algorithm) :

  • 컴퓨터로 문제를 풀기 위한 단계적인 절차
  • 문제와 컴퓨터가 주어진 상태에서 문제를 해결하는 방법을 정밀하게 장치가 이해할 수 있는 언어로 기술한 것
  • 특정한 일을 수행하는 명령어들의 집합

* 명령어 : 컴퓨터에서 수행되는 문장들을 의미

 

 

알고리즘 정의 : 

  • 입력 : 0개 이상의 입력이 존재하여야 한다.
  • 출력 : 1개 이상의 입력이 존재햐여야 한다.
  • 명백성 : 각 명령어의 의미는 모호하지 않고 명확해야 한다.
  • 유한성 : 한정된 수의 단계 후에는 반드시 종료되어야 한다.
  • 유효성 : 각 명령어들은 종이와 연필, 또는 컴퓨터로 실행 가능한 연산이어야 한다.

즉, 입력은 없어도 되지만 출력은 반드시 하나이상 있어야 하고 모호한 방법으로 기술된 명령어들의 집합은 알고리즘이라 할 수 없으며 실행할 수 없는 명령어를 사용해도 알고리즘이 아니며 무한히 반복되는 명렁어들의 집합도 알고리즘이 아님

 

 

알고리즘 기술 방법 : 

  1. 한글이나 영어 같은 자연어
  2. 흐름도 (flowchart)
  3. 의사 코드 (pseudo-code)
  4. 프로그래밍 언어

1. 한글이나 영어 같은 자연어

자연어를 사용하기 때문에 약간의 모호성이 존재함.

모호성을 제거하기 위하여 명령어로 사용되는 단어들을 명백하게 정의해야만 알고리즘이 될 수 있음.

 

2. 흐름도 (flowchart)

도형을 사용하여 알고리즘을 기술하는 방법.

초심자에게 좋은 방법이지만 알고리즘이 복잡해질수록 기술하기 힘듦.

 

3. 의사 코드 (pseudo-code)

가장 많이 쓰이는 방법1

자연어보다는 더 체계적이고 프로그래밍 언어보다는덜 엄격한 언어.

알고리즘을 기술하는 데만 사용되는 코드를 의미.

대입 연산자가 '=' 가 아닌 '←'을 주의

 

4. 프로그래밍 언어

가장 많이 쓰이는 방법2

프로그래밍 언어의 예약어들은 모두 명백한 의미를 가지고 있음.

알고리즘을 기술하는데 안성맞춤.

 

 

배열에서 최댓값을 찾는 알고리즘을 의사 코드로 표현한 예 : 

ArrayMax(list, N):
	largest←list[0];
    for i←1 to N-1 do
    	if list[i]>largest
        	then largest←list[i]
    return largest

 

 

Quiz

01. 문제를 풀기 위한 단계적인 절차는   알고리즘   이다.

02. 알고리즘을 기술하기 위한 방법에는 자연어, 흐름도,   의사 코드   , 프로그래밍 언어가 있다.

03. 알고리즘이 되기 위한 조건이 아닌 것은?

  • 출력
  • 명백성
  • 유효성
  • 반복성

 

 

'공부 > 자료구조 | 알고리즘' 카테고리의 다른 글

[자료구조] 연결 리스트  (0) 2024.01.26
[자료구조] 스택과 큐  (0) 2024.01.26
[C언어로 쉽게 풀어쓴 자료구조] 1장 연습문제  (0) 2023.08.18
[C언어로 쉽게 풀어쓴 자료구조] 1.3 알고리즘의 성능 분석  (0) 2023.08.08
[C언어로 쉽게 풀어쓴 자료구조] 1.2 추상 자료형  (0) 2023.08.08
'공부/자료구조 | 알고리즘' 카테고리의 다른 글
  • [자료구조] 스택과 큐
  • [C언어로 쉽게 풀어쓴 자료구조] 1장 연습문제
  • [C언어로 쉽게 풀어쓴 자료구조] 1.3 알고리즘의 성능 분석
  • [C언어로 쉽게 풀어쓴 자료구조] 1.2 추상 자료형
2월2
2월2
  • 2월2
    서벅돌의 성장일기
    2월2
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • TIL (2)
      • Server (28)
        • spring (7)
        • node.js (16)
        • 기타 (5)
      • App&Web (17)
        • Web (1)
        • Android (16)
        • iOS (0)
      • 공부 (59)
        • 깃&깃허브 (3)
        • 파이썬 (17)
        • 유니티 (4)
        • 자료구조 | 알고리즘 (15)
        • 자바 (3)
        • 운영체제 (8)
        • AI와 데이터 (9)
      • 대외활동 (12)
        • NPC 동아리 (1)
        • UMC 동아리 (11)
      • 대학교 (1)
        • 교직 (1)
      • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글 관리
  • 링크

  • 공지사항

    • Notice
  • 인기 글

  • 태그

    Lua
    mysql
    kotlin
    Python
    파이썬
    루아
    Android
    java
    Unity
    코틀린
    자바
    유니티
    안드로이드
    C
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
2월2
[C언어로 쉽게 풀어쓴 자료구조] 1.1 자료구조와 알고리즘
상단으로

티스토리툴바