알고리즘 study -16-

한창희·2021년 7월 12일
0

algorithm study

목록 보기
16/26

자료구조

-> 자료를 저장하기 위한 주머니(자료를 저장하는 구조)
-> 목적에 맞는 이 주머니를 어떻게 디자인 할 것인가를 중점적으로 고민!


목적을 성취하기 위한 자료구조를 디자인하는 능력 기르기


변수

-> 가장 기본적인 자료구조


배열

-> 변수의 나열 / 배열 또한 자료구조

장점 : i번째 원소를 바로 알 수 있다
단점 : 원소의 삽입/삭제가 까다롭다


링크드 리스트(Linked List)

-> 여러개의 변수를 저장하는 다른 방법

장점 : 배열과 비교 시 원소의 삽입/삭제가 빠르다
단점 : i번째 원소를 알기가 쉽지 않다


캡슐화

-->> 자료구조 구현의 핵심!

  • 자료구조를 사용하는 사람은 자료구조가 어떻게 동작하는지 알 필요가 없다 / 알아서도 안된다

구조체(struct)
-> 캡슐화의 구현

  • 구조체는 하나의 Black Box를 구현할 때 사용한다 / 내부가 감춰져 있고 밖으로 사용법만 알려줌
  • 구조체는 하나의 Type을 정의하는 것

ex>

struct Point{
	int x;
    	int y;
        int getSum(){
        	return x+y;
        }
    
};

// Point p;
// p.getSum(); == p의 현재 x,y 값의 합을 리턴

#include <stdio.h>


struct Point{
  int x;
  int y;
  
  int getSum(){
    return x+y;
  }
};


int main() {

  Point p1, p2;
  
  p1.x = 1;
  p1.y = 2;
  
  p2.x = 3;
  p2.y = 4;
  
  printf("%d\n", p1.getSum());
  printf("%d\n", p2.getSum());

  return 0;
}

// main 안에서는 getSum의 내부가 어떻게 이루어져 있는지는 알 필요 없음 

struct를 사용하여 Point라는 자료구조를 "정의"!
Point라는 자료구조 p1, p2 "선언"

-> Point 라는 struct의 인스턴스 p1, p2


구조체를 쓰는 이유?

-> 캡슐화를 위해서


대표적인 자료구조

  • 스택
  • 트리
  • 그래프

어떤 목적으로 각각의 자료구조를 써야하는지를 항상 생각하자!!


profile
매 순간 최선을 다하자

0개의 댓글