패턴 인식과 일반화 — 같은 뼈대를 찾아 변수로
소재가 다른 프로그램도 같은 뼈대 를 찾으면, 달라지는 부분만 빈칸(변수) 으로 바꿔 틀 하나로 다시 쓸 수 있습니다.
1 개념 정리
패턴 인식pattern recognition 여러 프로그램에서 되풀이되는 공통 뼈대 찾기
일반화generalization 달라지는 부분만 빈칸(변수) 으로 바꿔 틀 하나로 만들기
숫자 맞히기
추측 입력 → 정답과 비교 → 힌트 ↻ 맞힐 때까지
가위바위보
손 입력 → 손끼리 비교 → 이번 판 결과 ↻ 2번 이길 때까지
하는 일의 순서가 같습니다 — 같은 뼈대 찾기 = 패턴 인식
↓ 달라지는 곳만 빈칸으로
틀
[입력] 받기→ [비교 규칙] 으로 비교→ [결과] 보여주기↻ [끝 조건] 까지
빈칸 있는 틀 만들기 = 일반화
틀을 만들면 값만 바꿔 여러 프로그램에 다시 쓸 수 있습니다
잘 찾았는지 세 가지로 점검합니다
✗ 나쁜 예
✓ 좋은 예
1 겉이 아니라 하는 일로조각이 하는 일의 순서가 같습니까?
✗ 나쁜 예
7 카드 게임= 7 카드 앨범
둘 다 카드가 나온다고 묶음
✓ 좋은 예
입력 → 비교 ↻
=
입력 → 비교 ↻
두 게임 모두 입력 → 비교 → 반복
2 변하는 것과 안 변하는 것 가르기줄마다 같은지 다른지 가렸습니까?
✗ 나쁜 예
입력 비교 반복 추측 숫자 손 모양
“두 게임은 다 똑같다”
3 변하는 것만 변수로빈칸에 값을 넣으면 원래 프로그램이 됩니까?
✓ 좋은 예
[입력] 받기→ [비교 규칙] 으로 비교↻
달라지는 값만 빈칸
빈칸에 값을 채웠을 때 원래 프로그램들이 빠짐없이 되살아나면 성공입니다.
2 예제 풀이 — 두 게임의 공통 뼈대 찾기
01장에서 나눈 두 게임을 나란히 놓고, 공통 뼈대를 찾아 틀 하나로 만듭니다.
1 두 조각 나무를 나란히 놓습니다
01장에서 나눈 두 나무를 번호와 색으로만 나란히 놓았습니다.
2 하는 일이 같은 조각끼리 짝짓습니다
숫자 맞히기 공통 역할 가위바위보
1 정답을 무작위(랜덤)로 정한다시작에 한 번
비교할 값 정하기 2 컴퓨터 손을 무작위로 정한다매 판
2 추측 숫자를 입력받는다
입력 받기 1 손 모양을 입력받는다
4 추측과 정답을 비교한다
비교해 가려내기 3 누가 이겼는지 가린다
3 시도 횟수를 1 늘린다
횟수 세기 4 이긴 횟수를 기록한다
5 힌트를 보여준다
결과 보여주기 5 결과와 이긴 횟수를 보여준다
6 맞힐 때까지 반복한다
끝 조건까지 반복 6 한쪽이 2번 이길 때까지 반복한다
7 축하와 시도 횟수를 보여준다
최종 결과 보여주기 7 마지막 승자를 보여준다
순서가 조금 달라도(숫자 맞히기 3·4번, 가위바위보 1·2번) 하는 일이 같으면 짝 입니다. 값을 정하는 때는 다릅니다.
3 공통 뼈대를 뽑아냅니다
공통 뼈대
2 입력을 받는다
3 입력과 값을 비교한다
4 횟수를 센다
5 결과를 보여준다
↻ 6 끝 조건이 될 때까지 2~5를 반복한다
1번을 언제 하는지만 빼면 두 게임에 공통인 흐름입니다
4 달라지는 부분을 빈칸(변수)으로 바꿉니다
일반화한 틀
2 [입력] 을 받는다
3 [입력] 과 [비교 대상] 을 [비교 규칙] 으로 비교한다
4 [셀 것] 을 센다
5 [결과] 를 보여준다
↻ 6 [끝 조건] 이 될 때까지 2~5를 반복한다
빈칸 숫자 맞히기 가위바위보
[정하는 때] 시작에 한 번 매 판
[비교 대상] 1~100 정답 컴퓨터 손
[입력] 추측 숫자 손 모양
[비교 규칙] 크다·작다·같다 가위바위보 이김 규칙
[셀 것] 시도 횟수 이긴 횟수
[결과] 더 큽니다·더 작습니다 힌트 이번 판 결과와 이긴 횟수
[끝 조건] 정답을 맞힘 한쪽이 2번 이김
[최종 결과] 축하와 시도 횟수 마지막 승자
✓ 되살아남 빈칸에 각 열의 값을 넣으면 두 게임이 그대로 됩니다.
[정하는 때] 까지 빈칸으로 두어서, 한 번 정하는 게임과 매 판 정하는 게임이 틀 하나에 담깁니다.
3 따라 하기 — 하이로우 카드 게임에 틀 적용
다음 카드가 지금 카드보다 높을지 낮을지 맞히는 게임입니다. 틀리면 끝나고, 이어 간 장수가 점수입니다.
물음 1 · 틀의 [입력] 찾기 이 게임에서 틀의 [입력] 에 들어갈 것은 무엇입니까?
(A) 컴퓨터가 뒤집을 다음 카드
(B) 다음 카드가 높을지 낮을지에 대한 사용자의 예측
(C) 지금까지 이어 간 카드 장수
(D) 남은 카드가 몇 장인지
하나를 고릅니다.
↻ 다시
물음 2 · 같은 뼈대 찾기 이 틀로 만들 수 있는 프로그램 4개 를 골라 빈칸을 채웁니다.
겉은 프로그램이지만 구조가 다른 카드 2장이 섞여 있습니다.
확인
↻ 다시
마무리 · 하이로우로 빈칸 채우기 하이로우 값을 틀의 빈칸에 채운 모습입니다.
완성 채우기 보기
빈칸 하이로우
[정하는 때] 매 판
[비교 대상] 컴퓨터가 뒤집을 다음 카드
[입력] 다음 카드가 높을지 낮을지 예측
[비교 규칙] 다음 카드가 예측대로 높은지 낮은지 가려냄
[셀 것] 이어 간 장수
[결과] 맞았는지 틀렸는지
[끝 조건] 예측이 틀림 (또는 카드가 다 떨어짐)
[최종 결과] 이어 간 장수
✓ 되살아남
하이로우는 카드를 매 판 뒤집어 가위바위보와 같은 갈래입니다. 틀 하나로 세 게임이 모두 표현됩니다.
4 스스로 풀기
난이도를 골라 빈칸을 채운 뒤, 예시 답안과 점검 목록 으로 확인합니다.
기본
발전
심화
문제 1 — 두 게임의 공통 뼈대 찾기
두 게임의 공통 뼈대를 틀로 쓰고, 달라지는 부분을 [빈칸] 으로 표시합니다.
사칙연산 대결 화면 예시
7 + 5 = ?
12 확인
점수 3 · 4 / 10문제
낱말 뜻 퀴즈 화면 예시
사과
과일 동물 채소
점수 2 · 5 / 20낱말
둘 다 맞으면 점수를 주고, 사칙연산은 10문제, 낱말 퀴즈는 낱말 목록 끝까지 되풀이합니다.
1 공통 뼈대 나무 하는 일이 같은 조각끼리 짝지으며
2 빈칸 표 두 게임에서 달라지는 부분
※ 입력한 내용은 저장되지 않습니다. 빈칸은 남겨도 됩니다.
예시 답안 보기 — 먼저 채운 뒤에 엽니다
공통 뼈대(틀)
1 [문제] 를 낸다
2 답을 입력받는다
3 [정답] 과 비교해 맞는지 가려낸다
4 맞으면 점수를 1 올린다
5 결과를 보여준다
6 문제 목록 끝까지 1~5를 반복한다
7 최종 점수를 보여준다
빈칸 사칙연산 대결 낱말 뜻 퀴즈
[문제] 사칙연산 식 낱말과 뜻
[정답] 계산 결과 올바른 뜻
답 입력받기·채점·점수·반복은 두 게임이 똑같으므로 틀에 그대로 둡니다. 이 부분까지 빈칸으로 빼면 뜻이 사라집니다.
스스로 점검
문제 2 — 게임이 아닌 프로그램에도 통하는가
두 관리 프로그램의 공통 뼈대를 빈칸 있는 틀로 만들고, 세 번째 프로그램 ‘좋아하는 과목 설문 받기’ 에 적용합니다.
둘 다 반 명단의 이름을 하나씩 보여 주고 답을 입력받아 기록합니다.
1 공통 뼈대 나무 반복 안 조각은 ‘+ 안쪽 조각’으로
2 빈칸 이름 프로그램마다 달라지는 부분
3 ‘설문 받기’에 값 채우기
※ 입력한 내용은 저장되지 않습니다. 빈칸은 남겨도 됩니다.
예시 답안 보기 — 먼저 채운 뒤에 엽니다
공통 뼈대(틀)
1 명단을 불러온다
2 명단 끝까지 다음을 반복한다
2-1 다음 이름을 보여준다
2-2 그 사람에게 [질문] 의 답을 입력받는다
2-3 답을 기록한다
3 결과표를 보여준다
빈칸: [질문] [답의 종류] [결과표 형식]
빈칸 설문 받기
[질문] 좋아하는 과목
[답의 종류] 과목 이름
나머지 흐름은 그대로이고 값만 바꿔 끼우면 됩니다. 이 뼈대는 게임과 다른 ‘명단 훑기’ 종류지만, 공통 뼈대를 찾아 빈칸으로 빼는 기술은 똑같이 통합니다.
스스로 점검
문제 3 — 억지로 하나로 묶으면
누군가 “둘 다 반복이 있으니 아래 두 뼈대를 하나의 틀로 합치자” 고 합니다. 합쳐도 되는지 따져 봅니다.
하이로우
예측 입력 → 다음 카드와 비교 → 결과 ↻ 틀릴 때까지
출석 부르기
다음 이름 → 출석 입력 → 기록 ↻ 명단 끝까지
1 두 반복이 끝나는 기준
2 억지로 합치면 생기는 문제
3 두 패턴의 이름
4 빈칸으로 뺄 수 있는 것 / 없는 것
※ 입력한 내용은 저장되지 않습니다. 빈칸은 남겨도 됩니다.
예시 답안 보기 — 먼저 채운 뒤에 엽니다
하이로우 출석 부르기
끝나는 기준 [끝 조건] 예측이 틀림 · 비교가 중심명단의 끝 · 기록이 중심
패턴 이름 ‘비교 반복형’ ‘목록 훑기형’
억지로 합치면: ‘언제 끝나는가’가 두 갈래로 뭉개져 빈칸이 늘고 더 헷갈립니다. 한 틀이 두 가지를 다 담으려다 어느 쪽도 깔끔히 되살리지 못합니다.
뺄 수 있는 것 입력 종류 · 비교 대상 · 끝 조건의 구체적 내용
뺄 수 없는 것 흐름(반복·비교·기록의 순서) — 그 순서가 곧 패턴의 정체입니다
스스로 점검
돌아보기 — 채점하지 않습니다. 공책에 짧게 답합니다.
1 가장 막힌 곳은 어디였고, 무엇을 바꿔서 풀었습니까?
2 세 문제에서 공통으로 쓴 방법 은 무엇입니까?
3 새 프로그램을 만나면 패턴을 찾으려고 무엇부터 하겠습니까?
공통 뼈대 찾기 → 달라지는 것만 빈칸으로. 이 사고가 패턴 인식과 일반화 입니다.
더 알아보기 — 매개변수, 중복 제거(DRY), 디자인 패턴
1. 빈칸의 실제 이름 — 매개변수와 인자
playGuessGame(비교대상 , 비교규칙 , 끝조건 )
넣는 값(인자): 1~100 정답 크다·작다·같다 정답을 맞힘
틀의 빈칸 [ ]은 함수의 매개변수(parameter) 가 됩니다.
함수를 부를 때 빈칸에 넣는 실제 값을 인자(argument) 라고 부릅니다.
2. 같은 코드를 두 번 쓰지 않기 — DRY 원칙
✗ 숫자 맞히기용 뼈대 가위바위보용 뼈대 같은 뼈대를 두 번
✓ 틀 하나 + 숫자 맞히기 값 가위바위보 값
같은 뼈대를 게임마다 새로 만들면, 한 곳을 고칠 때 여러 곳을 함께 고쳐야 합니다.
그래서 DRY 원칙(Don't Repeat Yourself — 반복하지 마라) 이 있습니다. 겹치는 부분을 틀(함수) 하나로 모으는 중복 제거 의 첫 단계가 패턴 인식과 일반화입니다.
3. 되풀이되는 좋은 구조의 이름 — 디자인 패턴
자주 나타나는 좋은 구조에 이름을 붙여 모아 둔 것을 디자인 패턴(design pattern) 이라고 합니다.
심화 문제에서 ‘비교 반복형’과 ‘목록 훑기형’에 이름을 붙인 것이 패턴에 이름을 주는 연습입니다.
자가진단
답을 고르면 바로 채점과 해설이 나옵니다.
Q1 · 개념 여러 프로그램에서 공통 뼈대를 찾아 틀로 만드는 까닭으로 가장 알맞은 것은 무엇입니까?
(A) 틀로 만들면 프로그램 실행 속도가 저절로 빨라지기 때문에
(B) 한 번 만든 틀을 값만 바꿔 여러 프로그램에 다시 쓸 수 있기 때문에
(C) 겉모습이 비슷한 프로그램만 골라 만들 수 있기 때문에
(D) 조각을 잘게 나눌수록 언제나 좋기 때문에
하나를 고릅니다.
↻ 다시
Q2 · 적용 ‘숫자 맞히기’와 ‘가위바위보’의 공통 뼈대에서, 두 게임이 서로 달라서 빈칸(변수)으로 빼야 하는 부분은 무엇입니까?
가위바위보 손 입력 → 손끼리 비교 → 이번 판 결과 ↻
(A) 사용자에게 입력을 받는다는 점
(B) 결과를 보여준다는 점
(C) 끝 조건이 될 때까지 반복한다는 점
(D) 무엇을 어떤 규칙으로 비교해 결과를 가려내는가
하나를 고릅니다.
↻ 다시
Q3 · 판단 다음 중 겉모습이 아니라 하는 일로 올바르게 패턴을 묶은 것은 무엇입니까?
(A) 화면이 파란색인 프로그램끼리 묶었다
(B) 제목에 ‘게임’이 들어간 프로그램끼리 묶었다
(C) 사용자 입력을 정답과 비교해 가려내고 반복하는 프로그램끼리 묶었다
(D) 만든 사람이 같은 프로그램끼리 묶었다
하나를 고릅니다.
↻ 다시
Q4 · 구분 여러 ‘○○ 퀴즈’ 프로그램을 틀 하나로 일반화할 때, 빈칸(변수)으로 빼기에 가장 알맞은 것 은 무엇입니까?
(A) 문제로 낼 내용(구구단·수도·낱말 등)
(B) 답을 입력받는다는 동작 자체
(C) 채점해서 맞는지 알려 주는 동작 자체
(D) 문제를 반복해서 낸다는 흐름 자체
하나를 고릅니다.
↻ 다시
핵심 정리
같은 뼈대를 찾아 변수로 일반화한다
1 나란히 놓기
→
2 하는 일로 짝짓기
→
3 공통 뼈대 뽑기
→
4 달라지는 것만 빈칸으로
겉이 아니라 하는 일로 변하는 것 가르기 변하는 것만 변수로
빈칸에 값을 넣으면 원래 프로그램이 되살아나야 합니다
이 장이 참고한 자료
Hunsaker, E. (n.d.). Computational thinking. In The K-12 educational technology handbook . EdTech Books. https://edtechbooks.org/k12handbook/computational_thinking
Jeong, G., Lash, T., & Israel, M. (2017). Helpful strategies for project planning during K-12 computer science instruction . Project TACTIC, Creative Technology Research Lab, University of Illinois. https://ctrl.education.illinois.edu/TACTICal/project-planning.html
Liedahl, B. (2026, June 22). Teaching computational thinking without a computer . Edutopia. https://www.edutopia.org/article/teaching-computational-thinking-without-computer/
← 이전: 01 문제 분해
다음: 03 추상화와 자료 표현 (준비 중)