1. 자료와 정보 사이의 관계

자료의 정의

- 현실세계에 존재하는 관찰이나 측정을 통해 수집된 값이나 사실
- 우리의 생활에서 실제로 만질 수 있거나 볼 수 있거나 하는 것에 대해서 물리적인 단위로 표현하여 얻어낼 수 있는 내용
  • 자료는 원시시대부터 있었다.
  • 현실세계에서 관찰해 얻은 자료를 기록, 분석, 처리하게 되면서 정보를 만들어냈다.

정보의 정의

- 어떤 상황에 대해서 적절한 의사결정을 할 수 있게 하는 지식으로서 자료의 유효한 해설이나 자료 상호 간의 관계를 표현하는 내용
- 어떠한 상황에 적절한 결정이나 판단에 사용될 수 있는 형태로 가공되거나 분류되기 위해 '처리 과정'을 거쳐서 정리되고 정돈된 '자료'의 2차 처리 결과물
  • 목적에 따라 자료를 가공해서 정보로 만든다.
  • 적절한 의사결정을 할 수 있도록 지식을 만들어내는 것이다.
  • 자료를 처리해서 결과값을 내놓는 것이 정보이고, 이 정보를 결정이나 판단에 사용한다.

자료의 가공 결과(정보)

자료 : Data
정보 : Information
  • Data(자료)를 가공한 결과가 Information(정보)
I = P(D)
  • I (정보 Information)
    D (자료 Data)
    p (처리 Process)
  • 데이터를 입력으로 넣으면 (D)
    컴퓨터가 처리해서 (P)
    정보로 만들어준다. (I)
  • 예시) 학생 성적 데이터
    철수 100
    영희 50
    길동 30
    -> 산출해낸 정보 : 철수의 시험 성적이 제일 높다

2. 추상화의 개념

추상화

  • 정확한 축적과 거리, 정확한 지형지물을 표현하지 않는다.
  • 목적지로 가기 위한 경로 정도의 정보만 표현되어 있다.
  • 정확한 지도가 표현되지 않았지만 직관적으로 목적지로 향하는 경로를 알 수 있다.
  • 모두 다른 모양이지만, 직관적으로 버스라고 판단한다.
  • 의미로 무엇인가를 전달할 때 추상화를 사용한다.
  • "목적지까지 버스를 이용해서 간다."고 했을 때 말하지 않아도 직관적으로 정류장이 어디인지, 버스비가 얼마일지, 어떤 결제수단을 이용할지를 이해하고 생각할 수 있다.
- 공통적인 개념을 이용하여 같은 종류의 다양한 객체를 정의하는 것
- 추상화를 통해 간결하게 말하는 사람의 의사를 전달할 수 있게 되는 것
  • 같은 종류 : 버스
    다양한 객체 : 고속버스, 시내버스, 마을버스, 마을버스, 시외버스 ...
    cf. 객체 : 현실에 존재하는 것. 현실에 존재하지 않더라도 대상으로 삼을 수 있는 것.
  • 추상화라는 것은 공통된 특징만 추출해서 모아 놓은 것이며, 하나의 의사전달 잡합으로 결정한다.
  • 마을버스, 시외버스, 관광버스 등 다양한 종류의 버스가 있지만 공통점을 가지고 '버스'라는 집합으로 공유한다.
  • 여러 종류의 버스들의 공통점
    • 여러 사람이 함께 이용한다.
    • 비용을 지불하고 이용할 수 있다.
    • 정류장이 고정되어 있다.
    • 경로가 정해져 있다.
      -> 이 공통점을 가진 것을 추출해서 '버스'라는 하나의 종류로 만든다. -> 추상화
  • 추상화를 통해 사람의 의사를 간결하게 전달할 수 있다.

자료의 추상화

- 자료의 추상화 : 다양한 객체를 컴퓨터에서 표현하고 활용하기 위해 필요한 자료의 구조에 대해서 공통의 특징만을 뽑아 정의한 것
- 자료의 추상화에는 컴퓨터 내부의 이진수의 표현 방법, 저장 위치 등은 포함되지 않고 단순하게 개발자의 머릿속에 그림을 그리는 것처럼 개념화하는 것
  • 컴퓨터에서 자료 혹은 객체는 1과 0으로만 표현되고 저장된다.
  • 사용자나 개발자는 텍스트, 이미지, 오디오, 비디오 파일 등으로 자료를 다룰 뿐, 컴퓨터 안에서 1과 0으로 어떻게 저장되는지 생각하지 않는다.
  • 객체들이 컴퓨터에서 표현, 활용되기 위해서는 개발자들은 정수, 변수 등의 개념만 알고 있으면 되고, 자료가 컴퓨터로 들어갈 때의 추상화 과정은 컴퓨터가 알아서 처리한다.
  • 컴퓨터와 개발자 사이의 의사전달을 위해 공통의 개념을 뽑아내서 추상화를 통해 개발자에게 던져준다.

3. 자료구조의 개념

자료구조

- 추상화를 통해 알고리즘에서 사용할 자료의 논리적 관계를 구조화한 것
- 자료의 추상화와 구조화가 적절히 이루어지지 못하면 소프트웨어는 비효율적으로 수행되거나 소프트웨어의 확장성에 문제가 생길 수 있음
  • 알고리즘은 컴퓨터가 해야할 일들을 정리한 것이다.
  • 컴퓨터가 일을 하려면 대상이 필요한데, 그 대상이 바로 자료이다.
  • 그 자료를 알고리즘에서 바로 사용할 수 있도록 만들어 둔 것이 바로 자료구조이다.

자료구조와 알고리즘의 관계

- 자료구조 : 입력 자료에 대한 추상화
- 알고리즘 : 컴퓨터가 수행해야 할 명령의 추상화
  • 컴퓨터가 처리하려면 (P(D))
    • 대상이 되는 자료가 있어야 한다. (자료)
      -> 자료를 추상화해서 잘 정리해놓은 것 : 자료구조
    • 어떻게 처리할 지가 있어야 한다. (처리)
      -> 처리과정을 추상화해서 잘 정리해놓은 것 : 알고리즘
  • 알고리즘과 자료구조를 가지고 프로그램을 짜고 컴퓨터가 처리하게 한다.

자료구조와 알고리즘의 추상화/구체화

- 입력값을 머릿속에서 추상화된 형태(자료구조)로 구조화하고,
수행되어야 할 명령어를 머릿속에서 추상화된 형태(알고리즘)로 체계화
  • 자료구조를 통해 입력값을 추상화된 형태로 만들어 놓는다.
  • 알고리즘을 통해 컴퓨터의 처리과정(프로그램)을 추상화된 형태로 만들어 놓는다.
  • 입력값과 프로그램이 컴퓨터에 제공되면 그제서야 컴퓨터가 일을 할 수 있게 된다.

 

- 블로그 참조 :  https://velog.io/@namyj97/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EC%9D%98-%EA%B0%9C%EB%85%90

 

스택(Stack)

- 메모리 안에 데이터들을 효율적으로 다루기 위해 만들어진 데이터 참조 방식이다.

 

LIFO (Last In First Out)

- 한 쪽 끝에서만 데이터를 넣거나 뺄 수 있는 선형구조로 제일 마지막에 들어온 데이터가 제일 먼저 나가는 방식을 말한다.

 

 

 

스택은 쌓아 올린다는 것을 의미한다.

따라 스택 자료구조라는 것은 책을 차곡차곡 쌓아 올린 형태의 자료구조를 의미한다.

 

스택에서 삽입하는 연산'push' , 삭제하는 연산'pop' 이라고 한다.

스택은 시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다 는 구조적 특징을 가진다.

 

스택의 활용 예시 (후입선출)

  • 웹 브라우저 방문기록 (뒤로가기) : 가장 나중에 열린 페이지부터 다시 보여준다.
  • 실행 취소(undo) : 가장 나중에 실행된 것부터 실행을 취소한다.
  • 수식의 괄호 검사 : 연산자 우선순위 표현을 위한 괄호 검사 
  • 역순 문자열 만들기 : 가장 나중에 입력된 문자부터 출력한다.

 

 

 


 

큐(Queue)

- 메모리 안에 데이터들을 효율적으로 다루기 위해 만들어진 데이터 참조 방식을 말한다.

 

IFO (First In First Out)

- 양 쪽 끝에서만 데이터를 넣고 뺄수있는 선형구조로 , 제일 처음 들어온 데이터가 제일 빨리 나가는 방식이다.

 

FIFO(First In First Out)

 

큐(Queue)에서 이루어지는 삽입연산을 인큐(enQueue)

프론트에서 이루어지는 삭제연산을 디큐(dnQueue)라고 한다.

순서대로 진행하는 자료구조를 말한다. (위 그림 참조)

 

큐의 활용 에시

예시 01) 놀이동산에서 줄을 서서 기다리고 먼저 타는것 ,

예시 02) 은행에서 먼저 온 사람이 먼저 처리 받는 것 

 

큐의 활용 예시 (선입선출)

-우선순위가 같은 작업 예약 ( 프린터의 인쇄 대기열)

-은행 업무 ( 먼저 번호표를 뽑은 사람이 먼저 업무를 처리한다)

-콜센터 고객 대기시간

-캐시(Cache) 구현 

 

'자료구조' 카테고리의 다른 글

[자료구조] 자료구조의 개념  (0) 2022.11.06

+ Recent posts