3. 자료구조와 문제해결

  • 자료구조
    • 수 많은 자료 중 내가 직면한 문제해결에 필요한 자료를 선택하고, 저장하고, 처리하는 과정에서 문제해결이 효율적으로 이루어질 수 있도록 수집한 자료를 구조화시키는 것
    • 자료들 사이의 관계를 나타내는 것
    • 자료를 효율적으로 사용하려면 문제에 필요한 자료를 분석하여 구조화된 배치로 표현해야함
    • 문제 효율적 해결 = 문제해결에 대한 자료들의 관계에 해당하는 자료구조의 설계, 활용 능력 필요
    • 각 원소들 사이의 관계가 논리적으로 정의된 일정한 규칙에 의하여 나열되며 자료처리를 효율적으로 수행하기 위해 자료를 조직적이고 체계적으로 구분하여 표현해야함. 
필요성
효율성 추상화, 용이성*** 재사용성 경제성

 *** 복잡한 자료, 모듈, 시스템으로부터 핵심적인 개념, 기능을 간추려내는 것

 

  • 선형구조
    • 자료간 앞 / 뒤 관계 1:1 고정
    • 순서고려 직선형태
배열 Array 연결리스트 Linked list
같은 타입 데이터 여러개 저장
여러 값을 하나의 이름으로 저장
각 데이터에 정수번호(인덱스)를 이용해 접근

* 별도의 이름 -> 관리 어려움
* 하나의 이름 공유 ->  조작 편리
자료를 기억하는 장소와
다음 자료가 있는 위치를 연결하는 부분을두어
자료의 삽입과 삭제시 자료 이동 최소화
자료부분은 자료의 값이,
연결부분은 다음 자료 주소 가리키는 포인터가 저장
스택 Stack 큐 Queue
LIFO (Last In First Out)
위치명시 X
in (push), out (pop) 모두 맨 위에서 수행됨
FIFO (First In First Out)
F I -> (                ) -> F O 
Enqueue (tail +1)       Dequeue(head +!)

 

  • 비선형구조
    • 한 원소 뒤에 어려개의 원소가 존재
    • 인접(전후) 원소 간  1 : n / n : m 관계 배치
    • 계층적 구조를 나타내기에 적합함
그래프 (사이클O) 트리 (사이클X 연결그래프 )
그래프 G는
공집합이 아닌 정점들의 유한집합 V(G) 과
공집합도 허용되는 연결선 E(G) 들의
유한집합으로 구성

G = ( V, E )



계층데이터를 모델링하기 위한 그래프의 한 형태
입력차수 0 인 정점하나 (루트),
루트가 아닌 다른 모든 정점(입력차수 1)
사이클 허용 X 루트에서 다른 정점들 모두에게 도달하는 경로 O
노드에 자료 저장, 자식들이 또 자식 가지는 계층구조 (자식의 상위 = 부모)
이진트리 이진탐색트리
루트 노드
+부속 왼쪽 or 오른쪽 서브트리로 구성
한 노드는 최대 2개 자식노드만 가짐
이진트리의 성질 O
왼쪽 자식노드 < 부모노드 < 오른쪽 자식노드

 

 

 

4. 논리적 사고 기반 문제해결

  • 논리적 사고
    • 문제에서 해답을 이끌어내는 과정이 타당하고, 분석적이며 단계적인 사고를 의미
    • 명확한 사고를 의미하며 문제에 대한 해결과정, 조건, 대상 혹은 아이디어들 간에 관계가 구조적이고 일반화 할 수 있는 과정
    • 문제해결 과정의 단계에 대한 조건 및 근거를 명확히 해야함 + 서로 유기적인 관계를 가져야함.
    • 애매모호한 것들을 분명하게 밝힐 수 있어야하며 논리적 사고력은 애매성에서 벗어나 명확성, 정확성을 갖출 수 있게 생각을 구체화시키고 발전시켜나갈 수 있어야함.
  • 논리적 사고와 문제해결방법
    • 논리적 사고는 해결해야 할 문제를 파악한 후 해결과정을 도출하는 과정에서
      • 정보의 이해와 해석
      • 정보의 정확성 및 가정
      • 판단, 결론의 타당성 평가
    • 등의 요소를 포함하고 있음.
    • 이는 문제를 정의하고 문제와 관련된 정보들의 적절성, 신뢰성을 판단하며 문제에 적절한 해결책을 찾아 구체화하는 논리적이고 체계적인 사고의 과정임
  • 논리적 사고력과 문제해결
    • 문제 명료화  해결 가능한 방안들을 제시 → 해결책의 타당성을 평가 → 문제의 해결책을 구체화
  • 논리적 사고의 요소
    • 생각하는 습관, 상대 논리의 구조화,구체적인 생각, 타인에 대한 이해, 설득
  • 논리적 사고의 종류
    • 계열화논리 : 문제해결의 각 단계별 요소를 규칙에 따라 배열하는 능력
    • 비례논리 : 비례 관계의 규칙과 관계를 이해하는 능력
    • 확률논리 : 특정 사건이 일어날 확률을 계산하는 능력
    • 변인 통제 논리 : 가설을 입증하기 위해 변인간의 관계를 도출하는 능력
    • 조합논리 : 문제해결 과정에서 모든 경우를 빠짐없이 나열하는 능력
    • 명제논리 : 참인지 거짓인지 판별하여 관계를 분석하는 능력

 

5. 컴퓨팅 사고 기반 문제해결

  • 컴퓨팅 사고력
    • 컴퓨팅 사고력을 수학적 사고와 결합하면 문제해결이 가능하다. 공학적 사고가 더해지면 복잡한 문제를 분해할 수 있고, 과학적 사고가 더해지면 우리가 이해하고 계산 가능한 접근을 할 수 있게 도와준다. 
    • 컴퓨팅 사고력은 컴퓨터 과학의 기본 개념을 바탕으로 문제해결, 시스템 설계, 인간행동의 이해를 포함하기에 커다란 문제를 해결하거나 복잡한 시스템을 설계할 때 요구되는 노리적 사고이며 절차적 사고임.
    • = 광범위한 컴퓨터 과학 분야가 융복합된 인지적, 정의적 도구
  • 개요
    • 문제해결을 위해 컴퓨팅 기기를 활용하여 자료를 논리적으로 분석하고 추상화를 통해 표현하며 알고리즘적 사고를 통해 해결과정을 자동화를 수행할 수 있는 능력
      • 추상화?  수집, 분석을 통해 문제를 재정의 / 복잡한 문제를 해결 가능한 작은 단위로 분해하여 절차를 나열
  •  컴퓨팅 사고력의 주요 개념
    • 자료수집, 분석, 표현
    • 문제분해, 추상화, 알고리즘과 절차
    • 자동화, 시뮬레이션, 병렬화
  • 컴퓨팅 사고력 문제해결 과정
문제인식    설계    구현
해결하려는 문제가 무엇인지 파악
문제 재정의
자료수집, 분석, 표현
문제의 핵심 요소 뽑아내기
문제 분해 -> 해결 가능한 문제
절차적 순서를 고려해 해결과정 설계
설계된 해결 과정을 컴퓨터를 통해 자동화한 후 수정, 보완

 

+ Recent posts