일정한 단계로 문제를 해결하기 위한 절차나 방법

Download Report

Transcript 일정한 단계로 문제를 해결하기 위한 절차나 방법

Ⅲ. 문제해결 방법과 절차
1. 알고리즘의 개념
1. 알고리즘 이란
- 일정한 단계로 문제를 해결하기 위한 절차나 방법
- 문제를 해결하기 위해 실행해야 할 명령들로 구성
2. 알고리즘의 중요성
같은 일을 하더라도 알고리즘에 따라 걸리는 효율
(시간과 난이도 등)이 달라지기 때문에 알고리즘이중요하다.
2. 알고리즘의 예시
- 라면 끓이는 방법
① 냄비에 물을 넣는다. ② 냄비를 불에 올려놓는다.
③ 물이 끊으면 라면과 수프를 넣는다. ④ 맛있게 먹는다.
- 전화를 걸어 친구와 통화하기
① 친구의 전화번호를 확인한다.
② 전화기를 든다.
③ 번호를 입력한다.
④ 통화 중이면 끊고 잠시 기다린 후 ② 부터 다시 시작한다.
⑤ 통화 중이 아니면 통화한다.
⑥ 통화가 끝나면 수화기를 놓는다.
3. 알고리즘이 갖추어야 할 조건
1) 입력(input) : 외부에서 제공되는 자료가 0개 이상 존
재해야 한다. 즉 입력 자료는 있거나 을 없을 수도 있다.
2) 출력(output) : 특정한 작업을 수행한 후에는 반드시
하나 이상의 결과를 출력해야 한다.
3) 명확성(definiteness) : 각 단계의 명령과 연산자들이
단순하고 명확하게 작성되어야 하며, 모호하지 않아야
한다.
4) 유한성(finiteness) : 알고리즘의 명령어들은 끝이 있
는 계산을 수행한 후에 종료해야 한다.
5) 수행 가능성(effectiveness) : 모든 명령어들은 현실
적으로 실행이 가능해야 한다.
4. 순서도 기호와 예
5. 순서도의 기본 모형
- 직선형 : 작업의 흐름이 차례차례 단계적으로
이루어지는 가장 기본적인 처리 절차로 이루어지는
구조
- 분기형 : 작업의 흐름이 조건 또는 조건식에 따라
분기 실행되도록 이루어지는 구조
- 반복형 : 작업의 흐름에서 주어진 조건이 만족될 때
까지 특정한 과정을 반복하여 실행되도록 하는 구조
6. 좋은 순서도의 조건
- 일의 순서에 오류가 없어 잘 실행되며,
알기 쉽고 간결하게 작성한 것이다.
7. 알고리즘의 다양한 표현 방법
◆ 자연어 : 사람들이 일상적으로 쓰는 언어를 사용하
여 알고리즘을 표현하는 방법으로 일반적 인 대화의
형식으로 나타내어 쉽게 이해할 수 있다.
◆ 순서도 : 순서도 기호로 알고리즘을 표현하는 방법
으로 문제를 분석하고 그 처리 순서를 단계화하여
약속된 기호로 알기 쉽게 표현하는 방법이다.
◆ 의사 코드 : 자연어보다 간략하게 표현할 수 있고,
프로그래밍 언어로 바꾸기 쉽다.
프로그램 작성자 간에 아이디어를 교환할 때는 의사
코드를 많이 사용하며, 자연어와 특정 프로그래밍
언어를 혼용하기도 한다.
◆ 프로그래밍 언어 : 프로그램을 만드는 언어로,
언어마다 형식과 문법은 다르며, 의사코드나 순서도
로 표현한 내용을 프로그래밍 언어로 작성하여 프로
그램을 완성한다. 대표적인 프로그래밍 언어에는 c,
java, basic과 교육용 프로그래밍 언어인 스크래치 등
이 있다.
8. 문제 해결 절차와 알고리즘 개발 절차
- 문제 해결 절차
문제 이해하기 ➜ 해결 방법 계획하기
➜ 해결 방법 실천하기 ➜ 반성하기
- 알고리즘의 개발 절차
문제 이해하기 ➜ 알고리즘 설계하기
➜ 알고리즘 표현하기 ➜ 알고리즘 평가하기
9. 활용도가 높은 알고리즘
• 활용도가 높은 알고리즘은 특정 상황에서
만 사용되는 알고리즘이 아니라 다른 상황
에서도 사용되는 알고리즘이다.
10. 알고리즘의 설계 구조를 이해하기
- 순차 구조 : 실행 순서가 시작부터 끝까지
한 방향으로만 되어 있는 구조
- 조건 구조 : 실행 순서가 주어진
조건에 따라 다르게 진행하는 구조
- 반복 구조 : 주어진 조건에 따라
특정 부분의 처리를 되풀이하여 실행하는 구조
11. 알고리즘 분석
• 시간복잡도
알고리즘이 문제를 해결하는 데 얼마나 효율적
이냐를 구별하는 기준을 시간으로 하여 측정하는
경우
• 공간복잡도
문제를 해결하기 위해 알고리즘이 소비하는 공간
의 양을 측정하여 효율성을 표현 하는 경우
12. 좋은 알고리즘의 조건
• 신뢰성이 높을 것
정밀도가 높고 올바른 결과를 얻을 수 있어야 한다.
• 처리 효율이 좋을 것
시간 복잡도와 공간복잡도가 좋아야 한다.
• 일반적일 것
특정 상황에서만 사용되는 알고리즘이 아니라 다양한
상황에서 사용할 수 있어야 한다.
• 확장성이 있을 것
변경 사항을 간단하게 수정할 수 있어야 한다.
• 알기 쉬울 것
누가 봐도 쉽게 이해할 수 있어야 한다.
13. 알고리즘의 설계 기법
◆ 욕심쟁이 기법
- 선택해야 할 방법이 여러 가지일 때 현재 상황에서
가장 최선인 것을 선택하는 방법
- 비교적 단순하면서도 널리 사용 가능한 기법이다.
◆ 분할 통치법
- 작은 부분 문제를 해결해 나간 후 그 해답들을 통합
하여 본래의 문제를 해결하는 방법
14. 자료 검색
◆ 순차 검색
저장되어 있는 자료를 맨 앞부터 순서대로 검색하는
방법이다.
- 장점 : 가장 간단한 검색 방법이다.
- 단점 : 탐색할 자료가 많을 경우 시간이 많이 걸린다.
◆ 이분 검색
중간 값을 기준으로 두 부분으로 나누어 중간 값을
기준으로 비교하는 방법이다.
- 장점 : 정확하고 빠르게 검색할 수 있다.
- 단점 : 방법이 복잡하다.
의사코드
1.물, 면, 스프를 준비한다.
2.물을 넣는다.
3.물을 끓인다.
4. 만약 물이 끓으면(예)
면과 스프를 넣는다.
그렇지 않으면 (아니오)
물을 계속 끓인다.
5.만약 4분이 지나면(예)
불을 끈다.
그렇지 않으면(아니오)
계속 끓인다.
6. 라면이 된다
순서도