핵심 정리 — 개념 지도
가지를 클릭하면 핵심 요약이 나타나요!
· 분해: 해결 가능한 크기로 — 작게, 완전하게, 겹치지 않게
· 모델링: 필요한 것만 남기는 단순화 + 관계를 정하는 구조화 (지하철 노선도!)
· 종합 단계에선 빠진 조각·충돌 점검 — 분해 트리는 9차시 프로젝트의 임무 분담표가 된다
· 정렬: 버블(이웃 교환)·선택(최솟값 선택)·삽입(자리에 끼우기) — 모두 n²급
· 탐색: 순차(정렬 불필요, 최악 n번) vs 이진(정렬 필수, 약 log₂n번 — 10억 개도 30번!)
· 효율은 비교·교환 횟수와 시간 측정으로 분석 — 데이터가 커질수록 알고리즘이 운명을 가른다
· 자료형: int·float·str·bool + list(순서)·dict(키-값) — 문제가 그릇을 결정
· 입출력: input()은 항상 str(형변환!), 파일은 "w"/"a"/"r" + with문 — 변수는 휘발, 파일은 영구
· 다차원: 리스트의 리스트, [행][열] — 시간표·성적표·이미지가 모두 표
· 제어 구조: if·elif·else / for·while·break — 복합이 진짜 힘 (반복 속의 선택!)
· 클래스=틀, 인스턴스=실체 — 속성+메서드를 한 몸에 (붕어빵 틀!)
· 협력: 분해 트리로 역할 분담, 짝 프로그래밍, 코드 리뷰
· 성능 평가: 테스트 케이스(정확성, 경계값을 노려라) + 시간 측정(효율성) → 개선 → 공유
단원평가
14문항 · 10개 성취기준 총망라 · 모두 풀고 [채점하기]!
3단원 종합 평가
객관식 12 + OX 2 · 일괄 채점
1복잡한 문제를 분해할 때의 원칙으로 옳지 않은 것은?
2비교 횟수는 많지만 교환 횟수가 최대 n−1회로 가장 적은 정렬 알고리즘은?
3n²에 비례하는 정렬이 1만 개를 2초에 처리했다. 10만 개는 대략?
4이진 탐색을 사용할 수 있는 조건은?
5과목 이름을 넣으면 점수가 나오는 성적 조회 프로그램에 가장 적합한 자료형은?
6다음 코드의 출력은?x = "3" print(x * 2)
7다음 코드에 5와 3을 차례로 입력하면 출력은?a = int(input()) b = int(input()) print(a + b)
8매일 출석 기록을 파일 뒤에 누적 저장하려 한다. open()의 알맞은 모드는?
9다음 코드의 출력은?data = [[10, 20], [30, 40]] print(data[0][1])
10다음 코드의 출력은?for i in range(1, 5): if i % 2 == 0: print(i)
11s1 = Student("민준"), s2 = Student("서연")에서 Student와 s1·s2의 관계는?
12모둠 프로그램 개발에서 협력적 설계·구현의 모습으로 가장 적절한 것은?
13[OX] 프로그램의 정확성을 평가할 때는 잘 동작할 것 같은 입력만 시험하면 충분하다.
14[OX] 정렬된 100만 개의 데이터에서 이진 탐색은 약 20번의 비교만으로 값을 찾을 수 있다.
서·논술형 자기 점검
먼저 스스로 써 본 뒤 예시 답안과 비교해 보세요.
1. 다음은 업다운 게임 코드의 일부다. 이 코드에 사용된 제어 구조를 모두 찾고, 각각이 게임에서 어떤 역할을 하는지 설명하시오. 12정03-07
2. "우리 반 도서 대출 순위 프로그램"을 모둠 프로젝트로 만든다고 하자. ① 문제를 작은 기능 3개 이상으로 분해하고 ② 각 기능에 알맞은 자료형 또는 알고리즘을 정하고 ③ 정확성을 검사할 테스트 케이스를 1개 이상 제시하시오. 12정03-01 12정03-09 12정03-10
성취기준 자가평가 — 10개의 봉우리 점검
스스로 솔직하게! 선택은 자동 저장됩니다.
12정03-01 복잡한 문제를 작은 문제로 분해하고 모델링할 수 있다.
12정03-02 정렬 알고리즘들의 특징과 효율을 비교·분석할 수 있다.
12정03-03 탐색 알고리즘들의 특징과 효율을 비교·분석할 수 있다.
12정03-04 적합한 자료형을 선택하여 프로그램을 작성할 수 있다.
12정03-05 표준입출력과 파일입출력을 활용한 프로그램을 작성할 수 있다.
12정03-06 다차원 데이터 구조를 활용한 프로그램을 작성할 수 있다.
12정03-07 제어 구조를 복합적으로 활용한 프로그램을 작성할 수 있다.
12정03-08 클래스와 인스턴스를 활용한 프로그램을 작성할 수 있다.
12정03-09 문제 해결 프로그램을 협력적으로 설계·구현할 수 있다.
12정03-10 프로그램의 성능을 평가하고 공유할 수 있다.
분해·모델링은 1차시 분해 트리, 알고리즘은 정렬 레이스와 탐색 대결, 파이썬이 약하면 4차시부터 실행기로 차근차근, 제어 구조는 업다운 게임 만들기, 평가 방법은 윤년 테스트 케이스 — 직접 돌려 본 만큼 남습니다!
진로 연계 — 이 단원이 통하는 직업들
소프트웨어 개발자
이 단원 전체가 개발자의 하루 — 분해, 구현, 테스트, 협업.
알고리즘 엔지니어
검색·추천·경로 — 더 빠른 풀이를 설계해요.
QA·테스트 엔지니어
테스트 케이스로 소프트웨어의 품질을 지켜요.
게임 프로그래머
게임 루프, 캐릭터 클래스 — 오늘 배운 것이 곧 게임의 뼈대.
경쟁 프로그래머
정보올림피아드·ICPC에서 알고리즘 실력을 겨뤄요.
지금까지 우리는 컴퓨터에게 절차를 일일이 알려 주는 프로그래밍을 배웠습니다. 그런데 "고양이 사진을 알아봐"의 절차를 코드로 쓸 수 있을까요? 쓸 수 없습니다 — 그래서 인공지능은 절차 대신 데이터를 주고 스스로 배우게 합니다. 프로그래밍의 패러다임이 뒤집히는 놀라운 세계, 지능 에이전트와 기계학습이 기다립니다!