📘 CodingMarble Learn

문제 해결 입문: 알고리즘과 순서도

컴퓨터로 문제를 풀 때는 단계가 있어요. 먼저 문제를 분석하고(입력, 출력, 규칙), 알고리즘을 만들고(끝이 있고 분명하며 순서가 있는 단계들), 프로그래밍 언어로 코드를 쓰고, 여러 입력으로 테스트하고, 오류를 찾아 고치는 디버깅을 해요. 알고리즘은 순서도(타원 = 시작/끝, 평행사변형 = 입력/출력, 직사각형 = 처리, 마름모 = 판단, 화살표 = 흐름)나 의사코드(구조를 갖춘 쉬운 말)로 나타낼 수 있어요. 문제 분해는 큰 문제를 작은 문제로 나눠 따로 풀고 다시 합치는 방법이에요.

🎬 단계별 이야기

  1. 문제 해결에는 다섯 단계가 있어요. 분석, 알고리즘 작성, 코딩, 테스트, 디버깅이에요.
  2. 분해는 큰 문제를 작은 조각으로 나누는 거예요. 조각마다 풀고 나서 합쳐요.
  3. 순서도는 모양으로 말해요. 타원은 시작이나 끝, 평행사변형은 입력이나 출력, 직사각형은 처리, 마름모는 판단이에요.
  4. A와 B 중 큰 수를 출력하는 순서도예요. 7이 4보다 크니까 토큰은 YES 길로 가요.
  5. 의사코드는 같은 단계를 쉬운 말로 한 줄씩 적은 거예요.
  6. 이제 네 차례예요. A와 B를 골라 보세요. 토큰이 어느 길로 가는지 보세요.

팁: 3D 화면을 드래그하면 돌아가요. 두 손가락으로 확대할 수 있어요.

🤔 헷갈리는 점, 한 번에 해결

코딩하기 전에 왜 알고리즘부터 쓰나요?

단계를 먼저 생각해 두면 올바른 아이디어로 코딩하게 돼요. 계획을 고치는 것이 큰 프로그램을 고치는 것보다 훨씬 쉬워요.

분해는 큰 소프트웨어에만 쓰나요?

아니에요. 작은 프로그램도 입력, 처리, 출력으로 나누면 더 쉬워져요.

판단에는 왜 마름모를 쓰나요?

마름모는 출구가 둘인 예/아니오 질문을 보여 줘요. 직사각형은 출구가 하나뿐이라 갈라질 수 없어요.

A와 B가 같으면 어떻게 되나요?

A > B가 거짓이라서 토큰은 NO 길로 가고 B를 출력해요. 두 값이 같으니 결과도 같아요. 자유 놀이에서 해 보세요.

순서도와 의사코드 중 어느 쪽이 더 좋나요?

작은 문제는 순서도가 눈에 잘 들어와요. 큰 문제는 의사코드가 쓰기 빠르고 실제 코드와 더 가까워요.

문제 해결의 단계

  1. 문제 분석: 주어진 것(입력), 원하는 것(출력), 규칙을 이해해요.
  2. 알고리즘 만들기: 해결 방법을 분명하고 순서 있는 단계로 적어요.
  3. 코딩: 알고리즘을 파이썬 같은 언어로 프로그램으로 바꿔요.
  4. 테스트: 여러 입력으로 실행해 봐요. 0, 음수, 아주 큰 값 같은 극단적인 경우도 넣어요.
  5. 디버깅: 오류를 찾아 고치고, 다시 테스트해요.

알고리즘에는 조건이 있어요. 입력과 출력이 분명하고, 단계가 유한해서 반드시 끝나고, 각 단계가 정확해서 헷갈리지 않고, 올바른 결과를 줘야 해요.

순서도

순서도는 알고리즘을 정해진 기호와 화살표로 그린 그림이에요.

순서도는 눈으로 보기 쉽지만, 문제가 커지면 너무 커져요.

의사코드

의사코드는 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"

자주 하는 실수

연습 퀴즈

1. 순서도에서 판단을 나타내는 기호는?
2. 오류를 찾아 없애는 일을 무엇이라고 하나요?
3. 알고리즘은 이래야 해요.
4. 순서도에서 입력과 출력에 쓰는 기호는?
5. 문제를 더 작은 부분으로 나누는 것은?

연습: 직접 풀어 보세요

답을 입력하거나 고른 뒤 확인을 누르세요. 막히면 힌트를 보세요. 풀이는 답을 낸 뒤에 나타나요.

자주 묻는 질문

문제 해결의 단계는 무엇인가요?

문제를 분석하고, 알고리즘을 만들고, 코딩하고, 테스트하고, 디버깅해요.

알고리즘과 순서도는 어떻게 다른가요?

알고리즘은 해결 방법을 말로 쓴 단계들이고, 순서도는 같은 단계를 기호로 그린 그림이에요.

분해란 무엇인가요?

복잡한 문제를 더 작은 문제로 나눠 따로 풀고 나중에 합치는 것이에요.

배우는 곳

Canada (Ontario)Grade 10C. Programming
Canada (Ontario)Grade 11B. Software Development
Canada (Ontario)Grade 11B. Software Development
ItalySecondaria di secondo grado – classe 1ªComputer basics and programming
ItalySecondaria di secondo grado – classe 1ªElements of computer science
ItalySecondaria di secondo grado – classe 1ªElements of computer science
ItalySecondaria di secondo grado – classe 1ªElements of computer science
ItalySecondaria di secondo grado – classe 2ªComputer basics and programming
ItalySecondaria di secondo grado – classe 2ªElements of computer science
ItalySecondaria di secondo grado – classe 2ªElements of computer science
ItalySecondaria di secondo grado – classe 2ªElements of computer science
NetherlandsVWO 3 (onderbouw)Mathematical thinking
NetherlandsHAVO 4 (bovenbouw, 2e fase)Foundations
NetherlandsVWO 4 (bovenbouw, 2e fase)Foundations
PolandLiceum ogólnokształcące, klasa IUnderstanding, analysing and solving problems
PolandLiceum ogólnokształcące, klasa IIIDesigning and programming algorithms (I + II)
RomaniaClasa a VIII-aAlgorithms
RomaniaClasa a IX-aMilitary profile (mathematics-informatics, military)
RomaniaClasa a X-aFundamental algorithms on arrays
Spain2º ESOComputational thinking, programming and robotics
Spain3º ESOComputational thinking, programming and robotics
Spain1º BachilleratoAlgebraic Sense
Spain1º BachilleratoAlgebraic Sense
Spain1º BachilleratoAlgebraic sense and computational thinking
CBSE (India)Class 11Computational Thinking and Programming - 1
England (GCSE, A level)Year 103.1 Fundamentals of algorithms
USA (Common Core, NGSS, AP)Grade 8Algorithms and Programming
USA (Common Core, NGSS, AP)Grade 9Algorithms and Programming
USA (Common Core, NGSS, AP)Grade 10Big Idea 3: Algorithms and Programming
USA (Common Core, NGSS, AP)Grade 11Algorithms and Programming
Japan高校(専門学科)1〜3年Programming
Japan高校(専門学科)1〜3年Programming Technology
South Korea중학교 2학년Algorithms and programming
South Korea중학교 3학년Abstraction and algorithms
South Korea고등학교 3학년Abstraction and algorithms
FrancePremièreAlgorithms
FranceTerminaleAlgorithms
FranceTerminaleSpecific option — management information systems
Russia7 классAlgorithms and programming
Russia8 классAlgorithms and programming
Russia10 классAlgorithms and programming
China高一Comp.1 Ch.2 Algorithms and programs

다음에 배우기