티스토리 뷰

02_컴퓨팅사고와 문제해결

학습목표 : 컴퓨팅사고의 개념과 구성요소를 이해하고 문제해결에 적용한다.
학습내용 : - 컴퓨팅 사고의 개념 정리 - 문제해결방법 - 문제분해, 패턴인식, 추상화

- 컴퓨팅 사고(Computational Thinking)의 개념과 중요성을 이해한다.
- 문제 해결을 위한 폴리아(Polya)의 4단계 문제 해결 방법을 적용 할 수 있다.
- 컴퓨팅 사고의 핵심 요소(문제 분해, 패턴 인식, 추상화)를 설명하고 실생활 문제에 적용할 수 있다.
- 알고리즘적 사고를 통해 문제를 논리적으로 분석하고 해결하는 방법을 익힌다.

컴퓨팅 사고의 개념과 이를 활용한 문제 해결 방법에 관하여 살펴보도록 한다. 지난 시간에는 컴퓨터와 디지털 정보 처리에 대해 학습하였으며, 컴퓨터는 아날로그 신호를 캡처하여 디지털로 변환한 후 저장하고 처리하여 정보를 생성하며, 이를 다시 아날로그로 변환하여 인간이 인식할 수 있도록 출력한다고 하였다.

그렇다면 컴퓨터가 문제를 처리하는 방식과 그 사고 과정은 어떻게 이루어질까?
이번 강의에서는 컴퓨팅 사고력이 무엇이며 왜 필요한지를 먼저 알아보고, 인간의 문제 해결 방법과 컴퓨터를 통한 문제 해결 방법을 비교하여 살펴본다. 또한, 컴퓨팅 사고력의 핵심 요소인 문제 분해, 패턴 인식, 추상화 과정을 학습하고, 실제 예제를 통해 문제 해결 과정을 구체적으로 탐색하도록 한다.


프로그램 개발의 변천

기존의 프로그램 개발 방식에서는 특정 문제를 해결하기 위해 각 분야의 전문가가 분석을 수행한 후, 프로그래머 또는 관련 전문가에게 요청하여 프로그램을 개발하는 방식이 일반적이었다. 이 과정에서 개발자는 컴퓨터나 AI를 활용한 전문 지식으로 문제 해결을 위한 솔루션을 제공하였다.

그러나 4차 산업혁명 시대에서는 모든 사물에 컴퓨팅 기술이 적용될 수 있으며, AI를 통해 전문 지식과 통찰력을 보다 쉽게 활용할 수 있는 환경이 조성되었다. 과거에는 문제를 해결하기 위해 의뢰자와 개발자의 원활한 소통이 필수적이었으며, 문제의 본질을 이해하는 각 분야의 전문가가 필요성을 정확히 전달하는 것이 중요했다.

하지만 현재는 컴퓨터공학 전공자뿐만 아니라 비전공자도 자기 분야에서 발생하는 문제를 해결하기 위해 AI 및 적절한 툴을 활용할 수 있는 시대가 되었다. 이를 위해 컴퓨팅 사고력을 바탕으로 문제를 분석하고, AI를 적절히 활용하며, 컴퓨터와 소통하기 위한 기본적인 코딩 역량이 점점 더 필요해지고 있다.

인간 사회에서는 문제가 발생하면 불편함을 개선하거나 지적 호기심을 해결하기 위해 이를 인식하게 된다. 이러한 문제를 보다 명확하고 명료하게 표현하기 위해 핵심 요소를 추출하는 추상화 과정을 거치며, 이후 해결 방안을 모색하고 실행하여 문제를 해결한다. 특히, 이러한 문제 해결 과정은 인간의 지적 노력과 협력을 바탕으로 이루어지며, 다양한 수단과 도구를 활용하여 보다 효과적으로 진행된다.

오늘날에는 컴퓨터와 기계를 이용하여 문제 해결 과정을 더욱 단순화하고 자동화할 수 있게 되었다. 이는 인간이 사회 발전 과정에서 문제를 해결해온 방식과 유사하며, 결국 컴퓨터 또한 인간의 사고방식을 모방하여 문제를 해결하는 도구로 발전해왔다.

컴퓨팅 이전의 문제 해결 방식에서는 사회, 문화, 윤리, 정치 등 다양한 요소를 고려하며 사회적 가치와 윤리적 측면을 반영하는 것이 중요했다. 반면, 컴퓨터 기반 문제 해결 기술 중심으로 이루어지며, 데이터 처리와 알고리즘 개발에 초점을 맞춘다. 이를 통해 작업을 자동화하고 반복성을 높이며, 높은 정확성과 빠른 속도를 제공할 수 있다. 더 나아가, 컴퓨터는 복잡한 데이터와 대규모 연산을 처리하는 데 강점을 가지며, 대용량 데이터에서 패턴을 찾고 예측 모델을 구축하는 데 효과적이다.

따라서 4차산업혁명의 시대에서는 누구나 컴퓨팅을 활용한 문제 해결 방법을 활용해야하며, 이를 위해서는 컴퓨팅 사고력을 길러야 한다고 이야기 하고 있다.


자넷 윙의 컴퓨팅 사고력

특히 자넷 윙(Jeanette Wing)은 컴퓨터 과학자로, 컴퓨팅 사고력(Computational Thinking)을 정의하고 이론화하는 데 기여한 주요 인물 중 하나이다. 그녀는 컴퓨팅 사고력을 다음과 같이 정의하였다.

"컴퓨팅 사고력은 문제 해결 및 시스템 디자인을 위한 일반적인 개념들의 집합이며, 이러한 개념들은 컴퓨터 과학자들의 사고와 연구에 뿌리를 두고 있습니다. 컴퓨팅 사고력은 문제의 정의, 해결책의 설계, 그리고 결과의 구현 및 실행과정을 다루며, 이를 효율적으로 수행하기 위해 추상화, 자동화, 알고리즘 개발 및 문제 분해와 같은 여러 컴퓨터 과학적 개념과 기술을 활용합니다."

따라서 자넷 윙의 정의에 따르면, 컴퓨팅 사고력은 컴퓨터 과학적인 관점에서 문제 해결과 시스템 디자인을 다루는 데 필요한 일반적인 개념과 기술을 포함하는 개념이며, 이 개념은 컴퓨터 과학 분야뿐만 아니라 다양한 분야에서 유용하게 적용될 수 있습니다.


컴퓨팅 사고력의 특징

자넷 윙은 컴퓨팅 사고력(Computational Thinking, CT)을 처음 개념화한 학자로, 이를 모든 사람이 가져야 할 필수 사고 능력으로 정의하였다. 그녀가 제시한 컴퓨팅 사고력의 주요 특징은 다음과 같다. 

  • 문제 해결 중심 사고
    • 컴퓨터과학적 개념을 활용하여 복잡한 문제를 논리적이고 체계적으로 해결하는 사고 과정.
    • 컴퓨터가 문제를 해결하는 방식을 인간이 학습하고 적용하는 것.
  • 자동화 가능성(Automation) 고려
    • 문제를 해결하는 과정에서 컴퓨터나 기술을 어떻게 활용할 수 있는지를 생각하고, 자동화를 통해 효율성을 높이는 것.
  • 문제 분해(Decomposition)
    • 복잡한 문제를 더 작은 부분으로 나누어 해결하는 방식.
    • 문제를 여러 개의 작은 부분으로 쪼개면 해결하기 쉬워지고, 나중에 다시 조립하여 전체적인 해결책을 구성할 수 있음.
  • 패턴 인식(Pattern Recognition)
    • 기존의 유사한 문제에서 반복되는 패턴을 발견하여 해결책을 도출하는 방식.
    • 과거의 경험을 활용하여 새로운 문제를 보다 효율적으로 해결함.
  • 추상화(Abstraction)
    • 핵심 요소만 남기고 불필요한 세부 사항을 제거하여 문제를 단순화하는 과정.
    • 핵심적인 개념과 원리에 집중하여 보다 효율적으로 문제를 해결할 수 있도록 함.
  • 알고리즘적 사고(Algorithmic Thinking)
    • 문제 해결을 위해 명확한 절차와 규칙을 정의하여 해결책을 구현하는 방식.
    • 알고리즘을 설계하면 문제를 해결하는 과정이 논리적이고 일관성 있게 유지됨.
  • 일반화(Generalization) 및 재활용
    • 한 가지 문제를 해결한 후, 해결 방법을 일반화하여 다른 문제에도 적용할 수 있도록 함.
    • 컴퓨터 과학에서 재사용 가능한 코드나 모듈을 설계하는 개념과 유사.

자넷 윙의 컴퓨팅 사고력 개념은 단순한 프로그래밍 기술이 아니라, 문제를 효과적으로 해결하기 위한 논리적 사고 및 문제 해결 전략을 의미한다. 이는 모든 학문 분야와 실생활 문제 해결에도 적용될 수 있는 보편적인 사고 방식으로, 4차 산업혁명 시대에 필수적인 역량으로 자리 잡고 있다.


폴리아의 4단계 문제 해결 방법

다음은 문제해결방법 중 폴리아의 4단계 문제 해결 방법을 도식화 하였습니다.

폴리아의 문제해결을 위한 4단계는
문제이해, 해결계획수립, 문제해결, 검토와 최종 점검의 단계를 거칩니다.이 방법은 다양한 문제 도메인에서도 적용 가능하며 특히, 폴리아(Polya)의 4단계 문제 해결 방법은 수학 문제를 해결하기 위한 접근 방법으로 유용하게 사용됩니다.

  1. 문제 이해 (Understand the Problem):
    • 첫 번째 단계는 주어진 문제를 완전히 이해하는 것입니다.
    • 문제에 어떤 정보가 주어졌는지 파악하고, 문제가 무엇을 요구하는지 이해합니다.
    • 문제를 읽고 다시 읽고, 필요한 경우 질문을 하거나 정보를 요약하여 문제를 분석합니다.
  2. 해결 계획 수립 (Devise a Plan):
    • 이 단계에서는 문제를 해결하기 위한 계획을 수립합니다.
    • 가능한 접근 방법을 고민하고, 어떻게 문제를 해결할 것인지 생각합니다.
    • 경우의 수, 비슷한 문제, 거꾸로 풀기, 단순화 하기 등 어떻게 문제를 풀것인가 계획을 수립합니다.
  3. 문제 해결 (Carry Out the Plan):
    • 세 번째 단계에서는 계획을 실행하여 문제를 해결합니다.
    • 수학 공식을 사용하거나 계산을 수행하며, 중간 단계에서의 결과를 정확하게 기록합니다.
  4. 검토와 최종 점검 (Look Back and Check):
    • 마지막 단계는 해결한 문제를 다시 검토하고 최종 결과를 확인하는 것입니다.
    • 계산 오류나 논리적 오류가 있는지 확인하고, 문제를 다시 읽어보며 답안이 문제의 요구 사항을 충족하는지 확인합니다. 필요하다면 해결책을 다듬고 개선합니다.

폴리아의 4단계 문제 해결 방법은
문제를 체계적으로 다루고, 해결 과정을 논리적으로 진행하여 수학 문제뿐만 아니라 다른 문제도 효과적으로 해결하는 데 도움이 됩니다. 이 방법은 학습자에게 문제 해결에 대한 구조적인 접근 방법을 제공하며, 문제 해결 역량을 향상시키는 데 유용한 도구로 사용되고 있죠.


예를 들어 같은 크기의 정사각형 12개로 이루어진 도형에서 크고 작은 정사각형이 모두 몇개인가? 라는 문제가 있을때 다음과 같이 4단계로 문제를 풀어보도록 합시다.

  1. 문제 이해 (Understand the Problem):
    • 먼저 문제를 잘 이해해야 합니다. 주어진 도형은 크기가 같은 정사각형 12개로 구성되어 있습니다. 이 도형에서 큰 정사각형과 작은 정사각형이 모두 몇 개인지 찾아야 합니다.
  2. 해결 계획 수립 (Devise a Plan):
    • 이 문제를 해결하기 위한 계획을 수립합니다. 큰 정사각형과 작은 정사각형을 구분하여 개수를 세어야 합니다.
    • 한 가지 접근 방법은, 변의 길이로 1, 2, 3인 경우로 계산해 봅니다.
  3. 문제 해결 (Carry Out the Plan):
    • 계획을 실행합니다. 큰 정사각형과 작은 정사각형의 변을 비교하여 개수를 셉니다.
    • 예를 들어, 만약 작은 정사각형의 변의 길이가 1이라고 가정하면, 4* 3 = 12
      길이 2라면 3 * 2 = 6
      길이가 3이라면 2 *1 =2  20개
  4. 검토와 최종 점검 (Look Back and Check):
    • 마지막으로, 해결한 문제를 다시 검토합니다. 예를 들어, 큰 정사각형과 작은 정사각형의 개수를 확인하고 문제의 요구 사항을 만족하는지 다시 확인합니다.

따라서 이 문제에서는 정사각형이 20개라는 결론을 얻을 수 있습니다.

예제 ) 아이스크림과 와플을 한 손에 잡고 한꺼번에 먹고 싶다!

문제는 아이스크림과 와플을 한 손에 잡고 한꺼번에 먹고 싶다는 이유에서 아이스크림을 먹는 용기에 담아 편리하게 먹을 수 없을까? 라는 문제를 해결 해 봅시다.

  1. 문제 이해 (Understand the Problem):
    • 먼저 문제를 완전히 이해합니다. 아이스크림과 와플을 한 손에 잡고 편리하게 먹을 수 있는 용기를 만들고자 하는 문제입니다.
  2. 해결 계획 수립 (Devise a Plan):
    • 이 문제를 해결하기 위한 계획을 수립합니다. 용기 디자인을 생각해야 하며, 아이스크림과 와플을 함께 보관하고 먹을 수 있는 형태로 만들어야 합니다.
  3. 문제 해결 (Carry Out the Plan):
    • 계획을 실행하여 아이스크림과 와플을 함께 담아 먹을 수 있는 용기를 디자인합니다. 이 과정에서 디자인과 재료 선택, 크기 결정 등이 필요합니다.
  4. 검토와 최종 점검 (Look Back and Check):
    • 마지막으로, 디자인한 용기가 문제를 해결하는 데 적합한지 확인합니다. 아이스크림과 와플을 함께 담아 먹을 수 있는지, 편리하게 사용할 수 있는지 검토합니다. 만약 수정이 필요하다면 수정하고 최종 제품을 확인합니다.

이렇게 폴리아의 4단계 문제 해결 방법을 활용하여 아이스크림과 와플을 한 손에 잡고 먹을 수 있는 용기를 개발할 수 있을 것입니다. 이 과정에서 디자인, 재료 선택, 기능성 고려 등이 중요한 역할을 할 것입니다.


예제 ) 로켓의 무게와 연료 효율성의 문제를 해결

미국과 소련이 로켓을 우주 궤도까지 진입시키는 도중 로켓의 무게와 연료 효율성의 문제를 해결하기 위해 다음과 같은 문제 해결 단계를 따를 수 있습니다.

  1. 문제 이해 (Understand the Problem):
    • 로켓을 우주 궤도에 진입시키기 위해 필요한 연료량과 로켓의 무게 문제를 완전히 이해합니다. 로켓이 무거워지면 연료를 많이 필요로 하지만, 연료를 많이 싣게 되면 무게가 더 늘어나는 애로사항이 있습니다.
  2. 해결 계획 수립 (Devise a Plan):
    • 문제를 해결하기 위한 계획을 수립합니다.
    • 먼저, 더 효율적인 로켓 엔진 디자인을 고려할 수 있습니다. 연료 소비 효율을 높이고 로켓의 효율적인 무게 감소를 고려하여 기존 로켓 엔진을 개선할 수 있습니다.
    • 즉, 연료통을 가진 추진체를 여러 단계로 분리, 한 단계식 지날때마다 연소된 로켓을 분리되어 나가도록 합니다. 
    • 그러면 가벼원진 몸체로 더 멀리 날아가겠죠.
  3. 문제 해결 (Carry Out the Plan):
    • 수립한 계획을 실행합니다.
    • 이를 통해 효율적인 로켓 엔진을 개발하고, 로켓의 무게와 연료 효율성을 향상시켰습니다.
  4. 검토와 최종 점검 (Look Back and Check):
    • 마지막으로, 개발한 로켓 엔진이 문제를 얼마나 효과적으로 해결했는지를 검토하고 최종 점검합니다.
    • 엔진 개발 후 시험과 실험을 통해 로켓의 성능을 확인하고 개선 사항을 발견하면 계속해서 개발을 진행합니다.

이처럼 문제 해결은 결구과 문제를 제대로 이해하고 분해하고 , 분석하는 것이고 이 또한 컴퓨팅 사고의 기본이 되는 거겠죠.


03_컴퓨팅 사고력의 구성요소

문제해결을 위해서 일반적으로 문제가 발견되며, 이를 분석해서 목표를 명확히 하며, 이를 위해 데이터 수집과 표현을 하게 되며, 다음 이를 분해, 패턴인식, 추상화, 알고리즘을 통해 즉 컴퓨터 사고단계를 거쳐 코딩을 하게됩니다. 

  1. 문제 발견 (Identify the Problem):
    • 먼저 어떤 문제가 발견되어야 합니다. 이 단계에서는 문제의 본질을 이해하고 문제가 무엇인지 명확히 파악해야 합니다.
  2. 이를 분석해서 제대로 목표를 명확히 - 문제 분석 (Analyze the Problem):
    • 발견된 문제를 더 자세히 분석합니다. 문제의 원인, 영향, 관련된 요소 등을 조사하여 문제를 이해하는 데 도움이 됩니다.
  3. 목표 명확화 (Define the Goal):
    • 문제를 명확하게 이해한 후에는 어떤 목표를 달성하고자 하는지 정의해야 합니다. 원하는 결과물이나 해결책을 명확하게 설정합니다.
  4. 데이터 수집과 표현 (Data Collection and Representation):
    • 문제 해결에 필요한 정보와 데이터를 수집하고 정리합니다. 
  5. 분해 (Decomposition):
    • 큰 문제를 더 작은 하위 문제로 분해합니다. 이렇게 하면 문제를 더 쉽게 다룰 수 있으며, 각 하위 문제를 독립적으로 해결할 수 있습니다.
  6. 패턴 인식 (Pattern Recognition):
    • 데이터와 문제에서 패턴을 식별하고 이를 기반으로 결정을 내리거나 예측합니다. 패턴을 인식함으로써 문제를 더 잘 이해할 수 있습니다.
  7. 추상화 (Abstraction):
    • 문제를 단순화하고 핵심 개념을 추출하여 문제를 더 이해하기 쉽게 만듭니다. 이로써 복잡한 문제를 해결할 수 있는 모델을 생성할 수 있습니다.
  8. 알고리즘 (Algorithm):
    • 문제를 해결하기 위한 명확한 절차나 규칙을 정의합니다. 이 단계에서 알고리즘을 개발하고 문제를 해결할 방법을 계획합니다.
  9. 코딩 (Coding):
    • 개발한 알고리즘을 컴퓨터 프로그래밍 언어로 구현합니다. 이러한 프로그래밍을 통해 컴퓨터가 문제를 해결할 수 있도록 합니다.
  10. 평가와 개선 (Evaluation and Improvement):
    • 해결책을 평가하고 결과를 확인합니다. 문제가 제대로 해결되었는지 확인하고, 필요한 경우 해결책을 개선하거나 수정합니다.

이러한 단계를 따라가면 문제를 체계적으로 해결할 수 있으며, 컴퓨팅 사고력을 적용하여 복잡한 문제도 효과적으로 다룰 수 있습니다

특히, 이 중 분해, 패던, 추상화, 알고리즘 설계를 컴퓨터 사고 단계라고 합니다. 

컴퓨팅 사고력은 분해 → 패턴 인식 → 추상화 → 알고리즘 설계의 단계를 거쳐 코딩을 통해 문제를 해결하는 방식으로 적용된다. 이러한 사고 과정은 소프트웨어 개발뿐만 아니라 실생활 문제 해결에도 중요한 역할을 한다.

1. 문제분석단계

발견된 문제를 더 자세히 분석합니다. 문제의 원인, 영향, 관련된 요소 등을 조사하여 문제를 이해하는 데 도움이 됩니다.

목표 명확화 (Define the Goal):문제를 명확하게 이해한 후에는 어떤 목표를 달성하고자 하는지 정의해야 합니다. 원하는 결과물이나 해결책을 명확하게 설정합니다

문제 분석 단계는 문제 해결을 위한 기초 작업으로, 핵심 요소를 파악하고 해결 방법을 모색하는 과정이다. 주요 목적은 다음과 같다.

  1. 문제 해결에 필요한 여러 가지 요소를 점검
    • 문제를 해결하기 위해 어떤 요소가 필요한지 파악하고, 해결 가능성을 평가함.
  2. 문제의 핵심을 정확하게 분석
    • 문제의 본질을 이해하고, 불필요한 요소를 제거하여 핵심 문제를 도출함.
  3. 해결 가능한 방법을 떠올릴 수 있는 바탕 마련
    • 기존의 해결책과 유사한 패턴을 찾아 적용하거나 새로운 해결 방법을 구상할 수 있도록 준비함.

문제 분석 단계에서 점검해야 할 사항들

문제 해결을 효과적으로 수행하기 위해서는 문제 분석 과정에서 주요 사항을 점검하는 것이 필수적이다. 아래는 문제 분석 단계에서 반드시 고려해야 할 요소들이다.

  1. 문제가 모순 없이 완전한 것인가?
    • 해결 과정에서 논리적 오류나 상충되는 조건이 없는지 확인해야 함.
  2. 문제가 실제로 존재하는 진짜 문제이며, 문제 정의가 정확한가?
    • 문제의 정의가 모호하지 않고, 해결해야 할 사항이 명확하게 설정되었는지 점검.
  3. 일정한 규칙이 없는 열린 사고 문제 형태인가?
    • 문제의 특성이 정형화된 유형인지, 혹은 창의적 접근이 필요한 열린 문제인지 구분해야 함.
  4. 문제의 핵심은 무엇인가?
    • 문제의 본질을 파악하고, 불필요한 요소를 제거하여 핵심적인 해결 요소를 도출해야 함.
  5. 한 가지 사항에 관한 문제인지, 혹은 복합적인 요소를 포함하는 문제인가?
    • 단순한 문제인지, 여러 요인이 얽힌 복잡한 문제인지 구분하여 분석해야 함.
  6. 문제가 애매하거나 불분명하지 않은가?
    • 문제 정의가 구체적이고, 해결을 위한 조건이 명확하게 정리되었는지 확인해야 함.
  7. 해당 문제에 대한 유사한 해결법이 이미 존재하는가?
    • 기존의 해결책이 존재한다면 이를 참고하여

문제 분석 단계에서는 문제의 본질과 해결 가능성을 정확히 평가하는 과정이 필수적이다. 이를 통해 논리적이고 체계적인 접근이 가능해지며, 효과적인 해결 전략을 수립할 수 있다.


모순이 없는 완전한 문제란?

1. 모순 없는 완전한 문제란?

  • 문제 내에서 논리적 모순이 없고, 해결이 가능한 상태여야 함.
  • 즉, 주어진 조건들이 일관되고, 문제 해결 과정에서 충돌이 발생하지 않아야 함.

2. 예제 문제 (양의 유산 분배 문제)

  • 한 노인이 자신의 17마리 양을 자식 3명에게 유산으로 남김.
  • 분배 기준:
    • 첫째 자식: 1/2 (양의 절반)
    • 둘째 자식: 1/3 (양의 1/3)
    • 셋째 자식: 1/9 (양의 1/9)
  • 문제점 발생:
    • 17마리의 양을 위 기준으로 분배하면, 1/2+1/3+1/9=17181/2 + 1/3 + 1/9 = \frac{17}{18}
    • 즉, 한 마리 부족하여 완전한 분배가 불가능함.
    • 논리적 모순이 발생하여 문제를 해결할 수 없음.

3. 결론

  • 모순이 있는 문제는 완전한 문제가 될 수 없음.
  • 문제를 해결하려면 추가 조건이 필요하거나, 문제의 재정의가 필요함.
  • 완전한 문제는 논리적 모순 없이 해결책이 존재하는 문제여야 함.

진짜문제 

문제의 진짜 여부를 확인하는 것은 시간과 노력을 아끼고 효율적으로 문제 해결을 진행하기 위해 중요한 단계입니다. 문제가 모순이나 부정확하게 기술되었을 경우, 이를 해결하기 위해 추가 정보를 수집하거나 문제를 다시 정의하면 될 수 있습니다.

 

  • 진짜 문제의 정의
    • 제대로 정의된 문제로, 올바른 해답이 나올 수 있는 문제를 의미함.
    • 해결할 수 있는 논리적인 구조를 가지고 있어야 함.
  • 예제: 연금술 문제
    • 중세 시대 연금술사들이 금속을 금으로 변환하려고 연구한 사례.
    • 과학적으로 불가능한 문제이며, 원래부터 해결될 수 없는 문제.
    • 즉, 애초에 해결 가능한 문제로 정의되지 않았으므로 진짜 문제가 아님.
  • 결론
    • 문제를 해결하기 전에 해당 문제가 실제로 해결 가능한 진짜 문제인지 점검하는 과정이 필수적임.
    • 해결 불가능한 문제를 연구하는 것은 시간과 자원의 낭비가 될 수 있음.
    • 따라서, 문제를 정의하는 과정에서 실현 가능성과 논리적 타당성을 고려하는 것이 중요함.

열린사고문제

일정한 규칙이 없는 열린사고 형태의 문제인가를 확인합니다. 

 열린 사고는 새로운 아이디어와 관점을 수용하고, 다양한 가능성을 탐구하며, 고정된 사고 패턴에서 벗어나는 것을 의미합니다. 
아래 어벤전스 영화처럼 히어로들은 상상력 넘치는 힘과 기술을 사용하여 문제를 해결하죠, 고정된 사고 패턴을 깨는 것은 문제 해결에 있어서 창의성과 효율성을 높일 수 있는 핵심적인 요소

 

  • 열린 사고 문제란?
    • 창의적이고 열린 사고를 바탕으로 해결해야 하는 문제.
    • 하나의 정해진 답이 존재하지 않을 수도 있으며, 여러 개의 해결책이 가능할 수 있음.
    • 상상의 나래를 펼쳐서 해결 가능성을 탐색할 수도 있음.
  • 열린 사고 문제의 특징
    • 문제의 해결 방법이 여러 가지일 수 있음.
    • 명확한 정답이 없거나, 상황에 따라 해결 방법이 달라질 수도 있음.
    • 창의적 사고와 지속적인 탐구가 중요한 역할을 함.
  • 예제: 좋은 세상을 만들려면?
    • "좋은 세상을 만들기 위한 방법은?"이라는 질문에 단 하나의 정답이 존재하지 않음.
    • 각 개인이나 집단의 가치관, 목표에 따라 다양한 해결 방법이 가능함.
    • 사회적, 윤리적, 기술적 관점에서 서로 다른 접근 방식이 존재할 수 있음.
    • 이미지 속 '어벤져스'와 '타노스'는 각자의 방식으로 세상을 바꾸려 하지만, 해결책에 대한 시각은 다를 수 있음.
  • 결론
    • 열린 사고 문제는 고정된 정답이 아닌 다양한 해결 가능성을 탐색하는 문제로, 창의적인 사고와 문제 해결 능력을 필요로 함.
    • 현실 세계에서는 복잡한 사회 문제, 윤리적 딜레마, 혁신적인 기술 개발 등이 열린 사고 문제의 대표적인 예시가 될 수 있음.
    • 열린 사고 문제를 해결하려면, 다양한 관점을 고려하고 창의적인 해결 방안을 모색하는 것이 중요함.

데이터 수집과 표현 (Data Collection and Representation):

문제 해결에 필요한 정보와 데이터를 수집하고 정리합니다. 데이터를 표현하고 구조화하여 분석에 활용할 수 있도록 준비합니다.

데이터 수집

 

  • 데이터 수집의 정의
    • 문제 해결을 위해 필요한 지식을 찾고 분석하는 단계.
    • 데이터를 활용하여 문제를 이해하고 해결 방법을 도출하는 과정.
  • 데이터 수집 과정
    • 분석: 자료의 의미를 이해하고, 데이터를 통해 특징을 발견하거나 패턴을 찾아 일반화하는 과정.
    • 흐름과 동향 파악: 데이터가 보여주는 트렌드나 관계를 분석하여 유용한 정보를 도출함.
  • 데이터의 종류
    • 수집된 데이터: 직접 관찰, 설문조사, 실험 등을 통해 얻은 데이터.
    • 주어진 데이터: 외부 기관, 연구 보고서, 기존 자료에서 제공된 데이터.
    • 검색 엔진 활용: 인터넷 및 데이터베이스를 활용하여 필요한 정보를 찾는 방법.
  • 결론
    • 데이터 수집은 문제 해결을 위한 핵심 과정으로, 신뢰성 있는 데이터 확보와 분석 능력이 중요함.
    • 수집된 데이터를 통해 문제 해결에 대한 방향을 설정하고, 추론 및 의사 결정을 위한 기초 자료로 활용할 수 있음.

데이터 구조화의 종류

데이터 구조는 데이터를 효율적으로 저장하고 활용하기 위한 방식으로, 크게 네 가지 종류로 분류된다.

  1. 단순 구조 (Primitive Structure)
    • 하나의 단일 데이터 값을 저장하는 구조.
    • 예: 정수, 실수, 문자 등 단일 데이터
    • 예시: 1, 1.0, "홍길동"
  2. 선형 구조 (Linear Structure)
    • 데이터가 순차적으로 저장되며, 한 방향으로 흐름이 존재하는 구조.
    • 예시: 배열(Array), 연결 리스트(Linked List), 스택(Stack), 큐(Queue)
  3. 비선형 구조 (Non-Linear Structure)
    • 데이터 간의 관계가 계층적이거나 복잡한 형태를 가지는 구조.
    • 예시: 트리(Tree), 그래프(Graph)
  4. 테이블 구조 (Table Structure)
    • 데이터를 행(Row)과 열(Column) 형태로 구성하여 저장하는 구조.
    • 예시: 데이터베이스 테이블(SQL), 스프레드시트

컴퓨팅 사고의 구성 요소: 분해(Decomposition)

문제 분해(Decomposition)는 큰 문제를 더 작은 하위 문제로 나누는 과정을 의미한다.

  • 복잡한 문제를 단순화하여 해결 가능성을 높이고, 각 하위 문제를 독립적으로 해결할 수 있도록 한다.
  • 작은 문제로 나누면 각 문제의 핵심이 명확해지고 해결이 용이해짐.
  • 이를 통해 각 하위 문제를 해결한 후 이를 결합하여 전체 문제를 해결하는 방식이 가능함.

밀러의 법칙(Miller’s Law)와 문제 분해

  • 밀러의 법칙(Miller’s Law)에 따르면, 인간이 한 번에 기억할 수 있는 정보의 최대 개수를 기억 범위(Memory Span)라고 하며, 대부분 7±2개의 정보를 즉각적으로 기억할 수 있음.
  • 그러나 중요한 것은 숫자가 아니라, 의미 단위(Chunking)로 묶인 정보를 더 잘 기억한다는 사실임.
  • 예제: 전화번호 형식
    • "01012345678" → 기억하기 어려움
    • "010-1234-5678" → 의미 있는 덩어리(Chunk)로 묶으면 기억하기 쉬움

➡ 이는 문제를 작은 단위로 분해하는 것이 인간이 문제를 이해하고 해결하는 데 효과적임을 시사함.

다시말해 

문제를 분해하는 것은 복잡한 작업을 더 작은 관리 가능한 부분으로 나누고, 이해하기 쉬운 수준으로 단순화하는 과정이다. 이를 통해 문제 해결을 보다 체계적이고 효율적으로 수행할 수 있다.

예제: 한식 식사 준비하기

한식 식사를 준비하는 과정을 문제 분해하여 살펴보면 다음과 같이 구분할 수 있다.

  1. 요리 종류에 따른 분해 (병렬 처리 가능)
    • 반찬 (예: 나물, 김치, 전 등)
  2. 각 요리의 세부 단계로 분해
    • 밥 짓기
      • 쌀 씻기
      • 쌀 불리기
      • 밥 짓기
    • 국 끓이기
      • 재료 손질
      • 육수 만들기
      • 국 끓이기
    • 반찬 만들기
      • 재료 준비
      • 조리 과정 수행

순차 처리 vs 병렬 처리

  • 순차 처리(Sequential Processing):
    • 한 가지 작업이 끝난 후 다음 작업을 수행.
    • 예: 쌀을 씻고 나서 밥을 짓는 경우
  • 병렬 처리(Parallel Processing):
    • 여러 작업을 동시에 진행하여 시간 효율성을 높임.
    • 예: 쌀을 씻는 동안 국을 끓이거나 반찬을 준비하는 경우

따라서, 문제를 체계적으로 분해하는 능력은 효율적인 문제 해결과 논리적 사고의 핵심 요소이다.


문제 분해 과정: 분할과 정복(Divide and Conquer) 정리

1. 분할(Divide)

  • 하나의 큰 문제를 해결 가능한 작은 문제로 나누는 과정
  • 보통 2개 이상의 하위 문제로 분할됨.
  • 예: 정렬 알고리즘(병합 정렬, 퀵 정렬)에서 데이터를 반으로 나누는 과정.

2. 정복(Conquer)

  • 나눈 작은 문제들을 더 작은 문제로 나누거나 해결하는 과정.
  • 나누어진 문제들이 충분히 작아지면 직접 해결하거나 특정 알고리즘을 적용하여 해결.

3. 합치기(Combine)

  • 해결된 작은 문제들을 다시 조합하여 최종적인 해결책을 구성.
  • 예: 병합 정렬에서 작은 배열을 정렬한 후 병합하는 단계.

이러한 접근 방식은 복잡한 문제를 더 작고 관리 가능한 부분 문제로 분해하고, 각 부분 문제를 효율적으로 해결한 다음 이를 통합하여 전체 문제를 해결하는데 사용됩니다. 이는 알고리즘 설계, 프로그래밍, 그리고 문제 해결에 널리 적용되며 효율적인 해결책을 찾는 데 도움을 줍니다.

예제: 병합 정렬(Merge Sort) 적용

  1. 분할(Divide): 리스트를 반으로 나누어 작은 리스트로 분해.
  2. 정복(Conquer): 작은 리스트들을 정렬.
  3. 합치기(Combine): 정렬된 리스트들을 다시 합쳐 최종 정렬된 리스트 완성.

패턴 인식(Pattern Recognition)

우선 아래 이미지를 보고 패턴을 살편 볼까요? 즉 유사성을 찾아 볼까요?

 

  • 주어진 문제에서 기존의 도형 패턴을 분석하고, 규칙을 찾아 적절한 도형을 선택하는 문제.
  • 주어진 도형 패턴:
    • 첫 번째 행: 원 안에 삼각형
    • 두 번째 행: 사각형 안에 어떤 도형이 들어가야 함.
  • 패턴 분석:
    • 원 안에 삼각형 → 삼각형 안에 원
    • 사각형 안에 ○(원) → 원 안에 □(정사각형)으로 대칭적 패턴 형성.
  • 정답: (3)번 도형 (원안의 사각형)

1. 패턴 인식이란?

  • 반복되는 규칙이나 특정한 관계를 발견하여 문제를 해결하는 과정.
  • 패턴을 분석하면 복잡한 문제를 쉽게 해결할 수 있으며, 예측 및 자동화에 유용함.

패턴이란?

pattern 이란? 어떤 문제에서 공통적인 유사성이나 특징.  개별적인 문제 내 또는 서로 다른 문제들 사이에도 존재 가능 합니다.

컴퓨팅 사고의 패턴 인식(Pattern Recognition)은
정보를 분석하고 이해하는 과정에서 특정 패턴을 감지하고 추출하는 능력을 나타냅니다.
이것은 컴퓨터 과학, 인공 지능, 데이터 과학 및 다양한 분야에서 중요한 개념이며, 사람과 기계 모두에게 중요한 역할을 합니다.

패턴 인식의 활용 예시

  • 컴퓨터 비전: 이미지 및 영상에서 객체를 인식하는 기술.
  • 자연어 처리: 텍스트에서 특정 패턴을 찾아 의미 분석.
  • 데이터 분석: 주어진 데이터에서 규칙성을 찾아 예측 모델 구축.

패턴 인식과 지혜

패턴 인식(Pattern Recognition)이란?

  • 지혜를 바탕으로 반복되는 규칙을 발견하고, 이를 통해 미래를 예측하는 과정.
  • 패턴을 인식하면 논리적으로 사고하고 문제 해결 능력을 향상시킬 수 있음.

패턴 인식의 특징

  • 논리적·합리적 방법으로 패턴을 분석하여 새로운 진리를 발견.
  • 직관적·감각적 방법으로 시각적 패턴을 형상화하여 더 쉽게 이해.
  • 과거의 데이터와 경험을 바탕으로 미래를 예측하는 능력.

패턴 인식은 단순한 데이터 분석을 넘어 지혜로운 사고로 발전할 수 있으며, 반복되는 규칙과 구조를 발견함으로써 새로운 해결책을 도출하는 중요한 과정이다. 특히 컴퓨팅 사고에서 패턴 인식은 문제 해결과 알고리즘 설계의 핵심 요소로 작용하며, 다양한 문제를 효율적으로 분석하고 최적의 해결 방법을 찾는 데 기여한다. 따라서 패턴을 이해하고 이를 활용하는 능력은 창의적 사고와 논리적 문제 해결력을 키우는 필수적인 요소이며, 이를 통해 복잡한 문제를 단순화하고 예측 가능한 해결 방안을 마련할 수 있다.


추상화

  • 추상(抽象)의 의미
    • '추(抽)': 법을 뽑아낸다.
    • '상(象)': 끝, 모양, 형상.
    • 즉, 형상을 뽑아내는 것을 의미한다.
  • 추상화의 과정
    • 여러 개념이나 사물에서 공통된 특성 또는 속성을 추출하여 파악하는 과정이다.
  • 추상의 의미(위키백과 인용)
    • 사물을 정확히 이해하기 위해 특정한 측면만 가려내어 포착하는 것.
    • 어떤 일면을 추상한다는 것은 다른 측면을 버리는 것과 같다.
    • 이것을 '사상(思像)'이라고도 한다.

컴퓨팅 사고에서의 추상화란?

  1. 추상화의 의미
    • 복잡한 문제를 단순화하여 중요한 특징만 남기는 것
    • 불필요한 특징을 제거하는 것
    • 핵심 특징을 일반적인 개념으로 만들어가는 과정
  2. 추상화의 과정
    • 문제를 단순화하여 불필요한 부분을 제거한다.
    • 핵심 요소, 개념 또는 기능을  간추려 일반화된 모델(generalized model)을 만든다.
  3. 비유적 표현 (이미지 설명)
    • 여러 가지 문제와 특징(여러 색의 화살표)이 깔때기(funnel)를 통해 필터링된다.
    • 필터를 통과한 후 핵심 특징만 남게 됨.

즉, 추상화는 문제를 해결하는 과정에서 중요하지 않은 요소를 제거하고 본질적인 요소만 남기는 과정이다. 컴퓨터 과학에서 알고리즘 설계, 프로그래밍, 머신러닝 등의 영역에서 필수적인 개념이다.


추상화를 하는 이유?

  • 문제를 쉽게 표현하여 해결책 설계 가능.
  • 패턴 인식(pattern recognition)을 통해 유사한 문제 해결에 응용 가능.
  • 여러 문제를 해결할 때 추상화 기술을 활용하면 효율성 증가.

추상화 과정 (오른쪽 흐름도)

  1. 특징 이해
  2. 핵심 요소 추출
  3. 문제 추상화
  4. 문제 간결화
  5. 이해가 쉬움
  6. 효과적인 해결 가능

이 과정을 통해 복잡한 문제를 단순하게 해결할 수 있다.


추상화 과정에서 사용하는 세 가지 방법

  • 특징 추출 방법 (Feature Extraction)
    • 여러 가지 단어, 문장, 그림 등에서 공통된 특징이나 차이점을 찾아내는 방법.
    • 예: AI가 이미지에서 특정 패턴(예: 얼굴, 문자 등)을 추출하는 과정.
    • 데이터 분석, 머신러닝에서 핵심적인 과정.
  • 관계 추론 방법 (Pattern Recognition & Inference)
    • 주어진 문제에서 일정한 규칙을 찾아 일반화하는 것.
    • 예: "모든 짝수는 2의 배수이다." → 짝수의 규칙을 발견하고 적용.
    • 알고리즘 설계, 논리적 사고 훈련에 활용.
  • 일반화 방법 (Generalization)
    • 여러 사실에서 공통된 특징을 추출하여 일반적인 법칙을 만드는 과정.
    • 예: "모든 삼각형의 내각의 합은 180도이다."
    • 프로그래밍, 과학적 법칙 발견, 데이터 마이닝에서 필수적인 개념.

이 세 가지 방법은 컴퓨터 과학뿐만 아니라 문제 해결, 논리적 사고, 패턴 분석, 데이터 과학에서 핵심적인 역할을 한다.
즉, 복잡한 문제를 해결할 때 공통 요소를 찾아내고, 규칙을 발견하여, 이를 일반화하는 것이 추상화의 핵심 과정이다!

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함