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


