학습자료 알고리즘과 프로그래밍 · 05

컴퓨팅 사고력 — 큰 문제를 다루는 생각 도구

세 블록(순차·반복·조건)으로 알고리즘을 만들 줄 알게 됐다면, 이제는 크고 막막한 문제 앞에서 좋은 알고리즘을 설계하는 생각 도구예요 — 쪼개기(분해)·규칙 찾기(패턴)·핵심만 남기기(추상화). 이 셋으로 문제를 다루기 좋게 만든 뒤, 앞에서 배운 세 블록으로 엮으면 큰 알고리즘이 완성돼요.

옛날엔 컴퓨터를 다루는 일이 몇몇 전문가의 몫이었어요.

지금은 달라요.

게임을 하고, 영상을 보고, 길을 찾고, 숙제를 도와줄 때도 우리는 컴퓨터와 인공지능(AI)과 함께 일해요.

그래서 "무엇을, 어떻게 시킬지"를 똑똑하게 생각하는 힘이 누구에게나 필요해졌어요.

특히 AI에게 일을 맡길수록 이 힘은 더 중요해져요.

AI는 시킨 일을 잘 해내지만, 무엇을 시킬지 정하는 건 사람이거든요 — 문제를 잘 나누고, 무엇을 시킬지 정확히 말하는 사람이 좋은 결과를 얻어요.

컴퓨터 과학자 재닛 윙은 이 힘을 읽기·쓰기·셈하기처럼 누구나 갖춰야 할 기본 능력이라고 불렀어요.


레고로 큰 성을 만들 때처럼

레고로 작은 자동차 하나는 블록 몇 개로 뚝딱 만들어요.

그런데 커다란 성을 통째로 만들려고 하면 어디서부터 손대야 할지 막막하죠.

그럴 땐 이렇게 해요.

성을 벽·문·탑 같은 부분으로 나누고(쪼개기), 똑같은 벽돌 쌓기가 반복되는 걸 알아채고(규칙 찾기), 설명서엔 색과 모양만 그리고 무게나 재질은 적지 않아요(핵심만 남기기).

그런 다음 순서대로 조립하면 성이 완성돼요.

문제를 다루기 좋게 만드는 이 세 가지 생각 — 쪼개기·규칙 찾기·핵심만 남기기 — 가 이 챕터의 주인공이에요.

다만 레고는 부품이 미리 정해져 있지만, 진짜 문제는 "무엇이 부품인지"부터 우리가 정해야 해요 — 그래서 쪼개기는 레고 조립보다 더 머리를 쓰는 일이에요.


괴물을 어떻게 그릴까? — 네 걸음으로 한눈에

친구에게 똑같은 괴물을 그리게 하려면 어떻게 말해 줄까요? 네 걸음을 하나씩 눌러 보며 따라가 보세요.

쪼개기 — '괴물 그리기'를 작은 일들로 나눠요.

괴물 그리기
머리 몸통 다리

큰 문제 하나(괴물 그리기)를 작은 일 다섯 개로 쪼갰어요. 하나씩은 훨씬 쉬워요.

규칙 찾기 — 반복되는 부분을 알아채요.

머리 ×2 몸통 ×2 다리×2

눈·팔·다리는 2개씩 반복돼요. 반복을 찾으면 '2번 그려'처럼 한 번에 말할 수 있어요(앞에서 배운 반복 블록으로 줄여요).

핵심만 남기기 — 중요한 것만 남겨요.

자세히 (다 그리면 복잡)
색깔·무늬·표정·그림자…
핵심만 (무엇이 몇 개, 어디에)
눈 2개, 가운데 위
팔 2개, 양옆

색깔·무늬는 잠시 접어 두고 '무엇이 몇 개, 어디에'만 남겼어요. 그러면 어떤 괴물에도 쓸 수 있어요.

엮기 — 쪼갠 일을 차례로 늘어놓고 반복을 묶어요.

  1. 1머리를 그린다
  2. 2눈을 2개 그린다(반복)
  3. 3몸통을 그린다
  4. 4팔을 2개 그린다(반복)
  5. 5다리를 2개 그린다(반복)

쪼갠 일들을 차례대로 늘어놓고, 반복되는 건 '2번'으로 묶었어요. 이제 친구는 이 순서만 따라 하면 똑같은 괴물을 그릴 수 있어요 — 앞에서 배운 세 블록으로 엮은 거예요.

큰 문제가 오면 이렇게 물어요 — 더 작게 나눌 수 있나?(쪼개기) → 반복되는 게 있나?(규칙 찾기) → 꼭 필요한 것만 남기면?(핵심만) → 어떤 순서로 엮을까? 마지막 엮기는 앞에서 배운 순차·반복·조건 세 블록이 맡아요.


쪼개기 — 큰 일을 작은 일로

큰 일은 그대로 보면 막막해요.

그럴 땐 작은 일 여러 개로 쪼개요.

작은 일 하나하나는 풀기 쉽고, 쪼갠 조각마다 앞에서 배운 블록으로 해결할 수 있어요.

이렇게 큰 문제를 다루기 좋은 작은 문제들로 나누는 걸 쪼개기(분해, decomposition)라고 해요.

운동회를 여는 데 꼭 필요한 작은 일만 골라 보세요. 운동회와 상관없는 일도 섞여 있어요.

이번 주에 운동회를 열어요. 운동회를 잘 열려면 어떤 작은 일들로 쪼개야 할까요? 알맞은 것을 모두 골라 보세요.

큰 일(운동회)을 다루기 좋은 작은 일들로 나누는 게 쪼개기예요. 상관없는 일을 끼워 넣으면 쪼개기가 흐트러져요.


규칙 찾기 — 반복되는 것을 알아채기

쪼개 놓고 보면, 닮은 일이나 되풀이되는 일이 눈에 띌 때가 있어요.

"똑같은 걸 여러 번" 하는 것 — 이게 규칙(패턴)이에요.

규칙을 찾으면 "다섯 번 그려"처럼 한 번에 말할 수 있어요.

되풀이되는 규칙은 앞에서 배운 반복 블록으로 짧게 줄일 수 있거든요.

줄을 보고 다음에 올 것을 골라 보세요. '다음 문제'로 여러 규칙을 만나 봐요.

되풀이되는 규칙을 찾으면 다음에 올 것을 알 수 있어요. 이런 반복 규칙은 앞에서 배운 반복 블록으로 짧게 줄일 수 있고요.


핵심만 남기기 — 군더더기를 덜기

문제를 풀 때 모든 걸 다 챙기면 오히려 복잡해져요.

그래서 중요한 것만 남기고, 덜 중요한 건 덜어내요.

지하철 노선도를 떠올려 봐요.

진짜 도시처럼 건물이나 도로 폭까지 그리진 않지만, 어느 역에서 갈아타는지는 또렷이 알 수 있어요 — 길찾기엔 그걸로 충분하거든요.

이렇게 목적에 꼭 필요한 것만 남기는 걸 핵심만 남기기(추상화, abstraction)라고 해요.

다만 "무엇이 중요한지"는 목적에 따라 달라져요 — 길찾기엔 도로 폭이 군더더기지만, 도로를 새로 만드는 사람에겐 도로 폭이 가장 중요할 수도 있어요.

길을 찾는 데 꼭 필요한 것만 골라 보세요. 노선도에 굳이 그릴 필요 없는 것도 섞여 있어요.

처음 온 친구에게 줄 버스 노선도를 그려요. 길을 찾는 데 꼭 필요한 정보만 골라 보세요(모두 고르기).

목적(길찾기)에 필요한 것만 남기는 게 핵심만 남기기예요. 군더더기까지 다 그리면 오히려 길을 찾기 어려워져요.


한 학급 자리 배치하기 — 세 도구로 풀고 블록으로 엮기

큰 일(자리 배치)을 세 도구로 풀어 본 다음, 앞에서 배운 세 블록으로 엮어 봐요.

우리 반 자리를 정해요. 학생 명단과 몇 가지 약속이 있어요.
1쪼개기
자리 배치라는 큰 일을 작은 일로 나눠요 — 키 순서로 줄 세우기, 칠판이 잘 안 보이는 친구는 앞으로 보내기, 너무 친한 친구끼리는 떼어 놓기.
2규칙 찾기
세 가지 작은 일을 보면, 매번 '약속을 확인한다 → 자리를 정한다'가 되풀이돼요. 학생 한 명마다 같은 일을 반복하는 규칙이에요.
3핵심만 남기기
자리를 정하는 데 필요한 건 이름·키·시력이에요. 좋아하는 색이나 띠는 가방 색은 자리와 상관없으니 덜어 내요.
4엮기 (세 블록으로)
이제 앞에서 배운 세 블록으로 묶어요 — 작은 일들을 차례대로(순차) 늘어놓고, 학생마다 되풀이되는 부분은 반복으로, '이 친구는 앞으로 보낼까?' 같은 약속 확인은 갈림길(조건)로요. 이렇게 자리표 만드는 알고리즘이 완성돼요.

쪼개기·규칙 찾기·핵심만 남기기로 문제를 다루기 좋게 만든 뒤, 순차·반복·조건으로 엮으면 알고리즘이 돼요. 이게 큰 문제를 푸는 길이에요.

1단계에서 쪼갠 '키 순서로 줄 세우기'는 사실 이름이 붙은 멋진 방법이 따로 있어요 — 무언가를 순서대로 줄 세우는 걸 정렬이라고 하거든요. 이렇게 문제를 쪼개다 보면 이름난 방법들을 만나게 되는데, 그건 다음에 배울 이야기예요.

한 걸음 더 — 학술 이름, 누가 정의했나, 왜 AI 시대에 더 중요할까

본문만 읽어도 챕터는 완결돼요. 아래는 한 걸음 더 들어가고 싶은 친구를 위한 보너스예요.

1. 학술 이름으로는 이렇게 불러요

본문에서 쓴 세 도구는 컴퓨터 과학에서 부르는 이름이 따로 있어요.

쪼개기(분해)는 큰 것을 부품 단위로 나눈다는 뜻에서 모듈화(modularity)라고도 해요.

규칙 찾기(패턴)는 닮은 것들에서 공통점을 뽑아 더 넓게 쓴다는 뜻에서 일반화(generalization)와 이어져요.

핵심만 남기기(추상화)는 중요한 속성만 남긴 모형을 만든다는 뜻에서 모델링(modeling)이라고 불러요 — 지하철 노선도가 도시의 '모형'인 것처럼요.

2. 컴퓨팅 사고력, 누가 어떻게 정의했나

"컴퓨팅 사고력"이라는 말을 널리 알린 건 미국 카네기멜런대학교의 컴퓨터 과학자 재닛 윙(Jeannette Wing)이에요.

윙은 2006년 학술지 『Communications of the ACM』에 실은 짧은 글 「Computational Thinking」에서 이렇게 말했어요 — 컴퓨팅 사고력이란 "컴퓨터 과학의 핵심 개념을 끌어다 문제를 풀고 시스템을 설계하는, 컴퓨터 과학자처럼 생각하는 힘"이라고요.

그리고 이 힘은 컴퓨터 전공자만의 것이 아니라 읽기·쓰기·셈하기처럼 모든 아이가 갖춰야 할 기본 소양이라고 했어요.

학교에서 가르치기 좋게 다듬은 정의도 있어요.

미국의 컴퓨터과학교사협회(CSTA)와 국제교육공학회(ISTE)는 2011년에 함께 정리했는데, 문제를 컴퓨터가 풀 수 있는 형태로 만들기 · 자료를 논리적으로 분석하기 · 핵심만 남겨 모형 만들기(추상화) · 알고리즘으로 자동화하기 · 더 나은 방법 고르기 · 다른 문제에도 옮겨 쓰기(일반화)를 꼽았고, 여기에 끈기 있게 매달리기, 답이 또렷하지 않아도 견디기 같은 태도까지 더했어요.

교육 현장에서 가장 널리 쓰는 건 분해·패턴 인식·추상화·알고리즘 네 가지인데(구글과 영국 BBC의 학습 자료가 이렇게 정리했어요), 바로 이 챕터에서 배운 그것이에요.

앞에서 만난 스크래치 연구(MIT의 브레넌·레스닉)도 컴퓨팅 사고력을 개념·실천·관점 세 축으로 풀었고요.

우리나라도 2022 개정 교육과정에서 컴퓨팅 사고력을 디지털 소양과 정보 교과의 핵심 역량으로 정해 두었어요.

3. 왜 AI 시대에 더 중요할까

요즘은 AI가 코드도 대신 써 주고, 그림도 그려 주고, 글도 정리해 줘요.

그러면 사람은 생각을 안 해도 될까요?

오히려 반대예요.

세계의 일자리 흐름을 살피는 세계경제포럼(WEF)은 '분석적으로 생각하는 힘'과 '복잡한 문제를 푸는 힘'을 앞으로 가장 중요한 역량 가운데 하나로 꼽았어요.

AI가 일을 잘 해낼수록, 문제를 잘 나누고(쪼개기) · 무엇을 시킬지 정확히 말하고(핵심만 남기기) · 나온 결과가 맞는지 판단하는 사람의 힘이 더 빛나거든요.

AI에게 잘 말하는 일(프롬프트라고 해요)도 결국 이 컴퓨팅 사고력이에요 — 무엇을 어떤 순서로, 어디까지 시킬지 또렷이 정해 주는 거니까요.


자가진단

외운 사실이 아니라 개념을 적용하는 문제예요. 답을 고르면 바로 정답·오답과 해설을 알려줘요. 틀려도 괜찮아요 — ↻ 다시로 얼마든지 다시 풀 수 있어요.

Q1 · 개념 구분"중요한 것만 남기고 덜 중요한 건 덜어내는" 생각 도구의 이름은 무엇일까요?
Q2 · 분해 적용"학예회 준비"를 작은 일로 쪼개려고 해요. 가장 잘 쪼갠 것은 무엇일까요?
Q3 · 추상화 적용처음 온 친구에게 우리 집까지 오는 약도를 그려 줘요. 길을 찾는 데 꼭 필요한 정보는 무엇일까요?
Q4 · 패턴 → 블록 연결자리를 정할 때 학생 한 명마다 "약속을 확인하고 → 자리를 정한다"를 똑같이 되풀이해요. 이 반복되는 규칙은 앞에서 배운 어느 블록으로 짧게 줄일 수 있을까요?

핵심 정리

세 도구로 다루고, 세 블록으로 엮어요
쪼개기 (분해)큰 일 → 작은 일
규칙 찾기 (패턴)반복을 찾아 반복 블록으로
핵심만 (추상화)군더더기를 덜기
세 도구로 푼 조각을, 세 블록으로 엮어요.
차례대로
(순차)
되풀이
(반복)
갈림길
(조건)
→ 큰 알고리즘 완성
  • 큰 문제는 쪼개기부터 — 작은 일로 나누면 하나씩 풀려요.
  • 규칙(패턴)을 찾으면 반복 블록으로 줄이고, 핵심만 남겨 군더더기를 덜어요.
  • 이렇게 다루기 좋게 만든 조각을 순차·반복·조건으로 엮으면, 크고 막막했던 문제도 알고리즘이 돼요.

문제를 쪼개다 보면 이름난 방법들을 만나요 — 자료를 순서대로 줄 세우고, 그 안에서 원하는 걸 빠르게 찾는 방법이 다음 이야기예요.