문제 해결의 단계
- 문제 분석: 주어진 것(입력), 원하는 것(출력), 규칙을 이해해요.
- 알고리즘 만들기: 해결 방법을 분명하고 순서 있는 단계로 적어요.
- 코딩: 알고리즘을 파이썬 같은 언어로 프로그램으로 바꿔요.
- 테스트: 여러 입력으로 실행해 봐요. 0, 음수, 아주 큰 값 같은 극단적인 경우도 넣어요.
- 디버깅: 오류를 찾아 고치고, 다시 테스트해요.
알고리즘에는 조건이 있어요. 입력과 출력이 분명하고, 단계가 유한해서 반드시 끝나고, 각 단계가 정확해서 헷갈리지 않고, 올바른 결과를 줘야 해요.
순서도
순서도는 알고리즘을 정해진 기호와 화살표로 그린 그림이에요.
- 타원(단말): 시작 / 끝.
- 평행사변형: 입력 / 출력.
- 직사각형: 처리(계산이나 값 넣기).
- 마름모: 판단. 들어오는 길은 하나, 나가는 길은 둘(예/아니오).
- 화살표: 흐름의 방향.
순서도는 눈으로 보기 쉽지만, 문제가 커지면 너무 커져요.
의사코드
의사코드는 INPUT, COMPUTE, PRINT, IF…ELSE, WHILE 같은 낱말을 써서 알고리즘을 쉬운 말처럼 적는 방법이에요. 진짜 프로그래밍 언어가 아니라서 문법을 엄격히 따지지 않아요.
INPUT A, B
IF A > B THEN
PRINT A
ELSE
PRINT B알고리즘에는 순차(단계를 차례로), 선택(IF 판단), 반복(루프)이 들어갈 수 있어요.
문제 분해
분해는 복잡한 문제를 더 작고 쉬운 문제로 나누는 거예요. 각 부분을 (보통 다른 사람이나 함수가) 풀고 나서 합쳐요.
예: 기차 예약 시스템은 열차 검색, 좌석 확인, 표 예약, 결제, 표 출력으로 나눌 수 있어요.
좋은 점: 이해하기 쉽고, 일을 나눠 할 수 있고, 오류를 찾기 쉽고, 부분을 다시 쓸 수 있어요.
시험 대비 포인트
자주 나와요. 간단한 일(두 수 중 큰 수, 1부터 n까지의 합, 짝수/홀수, 점수로 등급 정하기)의 순서도를 그리거나 의사코드를 쓰기, 기호 이름 말하기, 문제 해결 단계 나열하기, 예를 들어 분해 설명하기.
핵심 공식과 정의
- 문제 해결: 분석 → 알고리즘 → 코딩 → 테스트 → 디버깅
- 알고리즘 = 입력과 출력이 있고, 유한하고 정확하며 순서 있는 단계들
- 타원 = 시작/끝; 평행사변형 = 입출력; 직사각형 = 처리; 마름모 = 판단
- 구성 요소: 순차, 선택, 반복
풀이 예제
1. 직사각형의 넓이를 구하는 알고리즘을 쓰세요.
1. 시작. 2. 가로 L과 세로 B를 입력. 3. 넓이 = L × B. 4. 넓이 출력. 5. 끝.
2. 수가 짝수인지 홀수인지 확인하는 의사코드를 쓰세요.
INPUT N IF N MOD 2 = 0 THEN PRINT "Even" ELSE PRINT "Odd"
3. 1부터 10까지의 합을 출력하는 순서도를 설명하세요.
시작 → 처리: sum = 0, i = 1 → 판단: i <= 10? → 예: 처리 sum = sum + i, i = i + 1, 화살표로 판단으로 되돌아감 → 아니오: sum 출력 → 끝.
4. '학교 운동회 열기'를 분해해 보세요.
작은 문제: 종목 정하기, 학생 신청 받기, 운동장과 도구 준비, 일정 짜기, 심판 보고 결과 기록, 시상. 각각을 한 팀이 맡고 나중에 합쳐요.
5. A = 5, B = 12일 때 큰 수 찾기 순서도를 따라가 보세요.
시작 → A = 5, B = 12 입력 → 5 > 12인가? 아니오 → B = 12 출력 → 끝.
6. 점수 ≥ 90이면 A, ≥ 75이면 B, 아니면 C를 출력하는 의사코드를 쓰세요.
INPUT M IF M >= 90 THEN PRINT "A" ELSE IF M >= 75 THEN PRINT "B" ELSE PRINT "C"
자주 하는 실수
- 판단에 직사각형을 쓰는 실수. 판단은 항상 예/아니오 두 출구가 있는 마름모예요.
- 끝나지 않는 알고리즘을 쓰는 실수. 알고리즘은 유한해야 해요.
- 0이나 음수 같은 특이한 입력으로 테스트하지 않는 실수.
- 입출력(평행사변형)과 처리(직사각형)를 헷갈리는 실수.