TLQKF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 28

문제 해결과 프로그래
01. 추상화
02. 알고리즘
03. 프로그래밍

>>>학습의 연계
02 알고리즘
다양한 제어 구조를 이용하여 알고리즘을 설계하고, 수행 시간의 관점에
서 알고리즘을 분석한다.

알고리즘은 왜 필요한 걸까?


알고리즘은 어떻게 설계하고 작성할까?

“올바르게 손을 씻어 보세요.”라는 문제를 받았다고 가정해


보자.
‘올바른 손 씻기’ 문제를 해결하려면 먼저 그 문제를 이해하고
그것을 해결하기 위해 수행해야 할 활동의 절차를 찾아내
적절히 정리해야 한다. 이러한 작업을 통해 정의된 ‘문제 해결
활동의 절차’를 알고리즘이라 한다.
01

http://www.greenhospital.co.kr/bbs/view.php?&bbs_id=sub09_01&page=&doc_num=50
알고리즘 설계

학습 요소 ▪ 알고리즘
▪ 순차 구조, 선택 구조, 반복 구조

성취 기준

⚫ 제어 구조를 활용하여 논리적이고 효율적인 알고리즘을 설계할


수 있다.
헬로! EBS 소프트웨어! - 대소동 6. 알고리즘(1) (8:14)

EBSLearning (EBS 초중고 교육), 2016. 6. 29. https://www.youtube.com/watch?v=S8PA_VCJiow


1 알고리즘 설계

1) 알고리즘 이해
◆ 알고리즘(algorithm)이란?
❖ 문제를 논리적으로 해결하기 위한 절차나 방법
❖ 어떤 문제를 해결하기 위해 명확히 정의된
유한 개의 규칙과 절차의 모임
❖ [예]
▪ 레시피(음식 조리법)
▪ 비상 대피 요령
▪ 수학 문제 풀이 등
1 알고리즘 설계

◆ 알고리즘의 조건
❖ 입력: 외부에서 제공되는 0개 이상의 입력 필요
❖ 출력: 적어도 한 가지 이상의 결과 산출
❖ 명확성: 각 명령이나 연산자들은 모호하지 않고
명확
❖ 유한성: 해당 알고리즘의 명령대로 수행하고
난 후, 반드시 종료
❖ 실행 가능성: 알고리즘의 모든 명령은 실행이
가능해야
1 알고리즘 설계

❖ 라면 레시피의 조건 예
면, 분말 스프, 건더기 스프, 물,
입력
달걀 등의 식재료가 필요하다.

출력 라면이 완성되어야 한다.

물의 양, 스프의 양, 불의 세기, 조리
명확성 시간 등이 명확하게 제시돼야 한다.

레시피대로 끝까지 조리했을 경우,


유한성 조리 과정이 끝나야 한다.

레시피의 모든 내용은 실행이


실행 가능성 가능한 것이어야 한다.
알고리즘의 유래

◆ 알고리즘(algorism)
• 아부 압둘라 무함마드 이븐 무사 알콰리즈미(페르시
아: ‫یمزراوخ‬, 아랍어: ‫ىسوم نب دمحم هلال دبع وبأ‬, ‫يمزراوخل‬, 780년경~
850년경)라는 페르시아의 한 수학자 이름에서 유래

• 알콰리즈미
✓페르시아 최초의 수학책을 만듦
✓인도에서 도입된 아라비아 숫자를이용하여 최초로 사칙 연산
(덧셈, 뺄셈, 곱셈, 나눗셈)을 만들고 0과 위치값을 사용
✓‘대수학의 아버지’로 불리기도 함
✓‘대수학’을 뜻하는 단어 algebra는 그의 저서 <aljabr wa
almuqabala>로부터 기원
헬로! EBS 소프트웨어! - 대소동 6. 알고리즘(2) (9:47)

EBSLearning (EBS 초중고 교육), 2016. 6. 29. https://www.youtube.com/watch?v=qa7FytH4Zbc&t=32s


1 알고리즘 설계

2) 알고리즘 표현 방법
◆ 문제 해결의 세부 단계들을 구체적으로 포함
◆ 간결하고 명확하게 표현하고 이해할 수 있어야 함
◆ 그림과 기호를 많이 사용
◆ 표현 방법: 자연어, 의사 코드, 순서도 등
◆ 자연어, 의사 코드, 순서도의 공통점
❖ 특정한 문법적 지식 없어도 쉽게 사용 가능
❖ 이해하기 쉬움
1 알고리즘 설계

◆ 자연어

일상생활에서 사용하는 말이나 언어를 이용하여


표현 방법
표현

두 수를 입력받아 합을 계산하고, 그 합을 2로 나누
예 었을 때, 그 결과가 100 이상이면 결과를 출력하고,
100 미만일 경우에는 처음부터 다시 수행한다.

▪ 장점: 알고리즘을 쉽게 표현 가능
장단점
▪ 단점: 의미를 정확하게 전달하기가 힘듦
1 알고리즘 설계

◆ 의사 코드

▪ 특정 프로그래밍 언어의 문법에 구애 받지 않음


표현 방법
▪ 자연어로 프로그램의 코드를 흉내 내어 표현
첫 번째 수(A)를 입력
두 번째 수(B)를 입력
C에 A+B를 저장

C에 C/2를 저장
if(C>=100) C를 출력
else 처음부터 다시 수행
1 알고리즘 설계

◆ 의사 코드

▪ 장점
✓ 프로그래밍 언어의 문법에 대한 간단한 지식
만 있어도 쉽게 표현 가능
✓ 자연어보다 의미를 정확하게 전달
장단점
▪ 단점
✓ 기술하는 사람에 따라 표현 방식이 다름
✓ 알고리즘의 각 단계를 직관적으로이해하기어
려움
1 알고리즘 설계

◆ 순서도
표현 방법 미리 정의된 기호와 도형들을 이용하여 표현
장단점

▪ 장점: 알고리즘의 각 단
계를 직관적으로 이해
가능

▪ 단점: 복잡한 알고리즘
을 표현하기에 비효율
적인 경우 있음
순서도에 사용되는 기호와 의미
1 알고리즘 설계

3) 제어 구조
◆ 제어 구조란?
❖ 프로그램에서 실행되는 문장들의 실행 순서를
제어하는 구조
◆ 제어 구조의 표현
❖ 순차 구조, 선택 구조, 반복 구조
▪ 순차 구조: 알고리즘의 기본 틀
▪ 선택·반복 구조: 실행 여부나 횟수가 명시된 조건에
의해 결정
▪ 반복 구조: 반복 조건의 검사 시점에 따라 ‘선검사
후처리’, ‘선처리 후검사’의 두 형태로 구분
1 알고리즘 설계
거북이의 이동 궤적을 제어해
선이 그려지게 만드는 다양한 알고리즘
❖ 순차 구조
설명 예시 순서도
문제 해결을 위해 거북이를 움직여 세 변의 길이
필요한 명령들이 정해 와 내각의 각도가 모두 다른
진 순서대로 수행되는 삼각형을 그리고자 할 때, ‘
구조 거북이의 전진 거리와 회전
각도를 달리하여원하는삼각형
그리기
1 알고리즘 설계

❖ 선택 구조
설명 예시 순서도
주어진 조건을 비교· 1을 입력하면 좌회전 후 50
판단하여 선택 결과에 만큼 전진,
따라 처리하는 과정을 2를 입력하면 우회전 후 50
다르게 하는 구조 만큼 전진,
3을 입력하면 그냥 50만큼
전진을 하는 거북이가 있다
고 할 때(1, 2, 3 중 하나만 입
력할 수 있음),
입력 값을 달리하여 거북이
를 도착 지점으로 안내
1 알고리즘 설계

❖ 반복 구조
설명 예시 순서도
특정 조건을 만족할 때 거북이의 전진과 우회전을 4
까지 같은 명령을 반복 번 반복하여 사각형 그리기
하여 실행하는 구조로,
반복 횟수는 조건에 따
라 결정
• 선검사 후처리
• 선처리 후검사
1 알고리즘 설계

◆ 반복 조건의 구분
❖ 선택, 반복 구조의 공통점
▪ 관련 작업의 실행 여부가 실행 횟수가 명시된 조건에
의해 결정
❖ 반복 조건의 검사 시점에 따른 반복 구조의 구분
▪ 선검사 후처리
▪ 선처리 후검사
1 알고리즘 설계

❖ 선검사 후처리

설명 예시 순서도

반복 조건을 먼저 육각형을 그릴 때,
비교한 후 조건을 반복 횟수를 체크하여
처리 횟수가 6번을 넘지 않았으면
전진과 60도 회전을 반복하여
그릴 수 있음
1 알고리즘 설계

❖ 선처리 후검사
설명 예시 순서도

먼저 명령(들)을 처리 육각형을 그릴 때,
한후 먼저 전진과 60도 회전을
반복 조건을 비교하여 하고,
계속 반복 여부 결정 이 동작을 6번 반복했는가를
판단하여 계속
실행 여부를 결정 가능
1 알고리즘 설계

❖ 제어 구조 조합의 예
▪ 일반적 알고리즘의 기본 틀 : 순차 구조
▪ 제어 구조 조합
• 일부 단계의 작업들이 선택 구조나 반복 구조,
혹은 그들이 조합된 형태로 기술
1 알고리즘 설계

▪ 제어 구조 조합의 예 *MOD(A, j)
•MOD 연산을 실행하는
함수
•실행 결과 A를 j로 나눈
나머지 값을 돌려줌
학교 등교 과정을 알고리즘으로 표현하기

■ 문제 상황

• 이런! 늦잠을 잤네! 어떡하지?



• 앗! 핸드폰을 집에 두고 왔네! 어떡하지?


컴퓨팅 사고력 - 알고리즘적으로 생각하기

https://www.youtube.com/watch?v=PYB32Qx-etk&t=2s, 2016. 12. 5.


학교 등교 과정을 알고리즘으로 표현하기

■ 제어 구조를 활용하여 알고리즘으로 표현하기


구분 순차 구조 순차+선택 구조 순차+선택+반복 구조

알고리즘
표현

You might also like