정보

Similar documents
쉽게 배우는 알고리즘 강의노트

Algorithms

슬라이드 1

Ch.8 Procedures and Environments

Microsoft PowerPoint 알고리즘 개요(Part 1).pptx

슬라이드 1

2002년 2학기 자료구조

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint - 04알고리즘

01장.자료구조와 알고리즘

함께공주를구할용사고르기! 램왕자가칼솜씨가뛰어나다면힘세고용감한전사보다는치료마법을가진사제나, 많은정보를가지고있는동료가함께가는것이좋다. 램왕자가용에대한정보는가지고있으나싸움을잘하지못한다면, 강력한마법사또는파괴력이있는힘센전사와함께가는것이좋다. 램왕자는자신의능력을정확히파악한후자신

Microsoft PowerPoint - 04알고리즘

중간고사

Microsoft PowerPoint - 05알고리즘.pptx

06_sorting

슬라이드 1

Microsoft PowerPoint - ch11_정렬 [호환 모드]

슬라이드 1


-09- 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다. 비교정렬의한계를이해하고, 선형시간정렬이가능한조건과선형시간정렬알고리즘을이해한다. - - 한빛미디어 Sortng Algorth

OCW_C언어 기초

PowerPoint Presentation

슬라이드 1

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - 5장 정렬

chap x: G입력

Microsoft PowerPoint - chap11-포인터의활용.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - [2009] 02.pptx

정렬 강의자료

02장.배열과 클래스

Microsoft Word - PLC제어응용-2차시.doc

설계란 무엇인가?

Sequences with Low Correlation

WISHBONE System-on-Chip Interconnection Architecture for Portable IP Cores

Microsoft PowerPoint - 6장 탐색.pptx

슬라이드 1

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

슬라이드 1

슬라이드 1

Infinity(∞) Strategy

31. 을전개한식에서 의계수는? 를전개한식이 일 때, 의값은? 을전개했을때, 의계수와상수항의합을구하면? 을전개했을때, 의 계수는? 를전개했을때, 상수항을 구하여라. 37

Microsoft PowerPoint - ch07 - 포인터 pm0415

untitled

Chap 6: Graphs

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Microsoft PowerPoint - ch00 - Introduction to Programming Language Lecture

Chap 6: Graphs

<4D F736F F F696E74202D203728B0E8BBEABAB9C0E2B5B5B0B3B7D02DC1A4B7C4B9AEC1A6292E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - hw8.ppt [호환 모드]

Microsoft PowerPoint - chap04-연산자.pptx

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Data structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은

Microsoft PowerPoint - chap-11.pptx

문서의 제목 나눔명조R, 40pt

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

완벽한개념정립 _ 행렬의참, 거짓 수학전문가 NAMU 선생 1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에

statistics

Microsoft PowerPoint - chap-06.pptx

Microsoft PowerPoint - chap-05.pptx

금오공대 컴퓨터공학전공 강의자료

6장정렬알고리즘.key

14장.탐색

chap 5: Trees

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap05-제어문.pptx

(001~006)개념RPM3-2(부속)

Microsoft PowerPoint - chap-03.pptx

18강.hwp

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint 프레젠테이션

2007_2_project4

<4D F736F F F696E74202D2031C1D6C2F72D31C2F7BDC32028B0ADC0C7C0DAB7E D20C7C1B7CEB1D7B7A1B9D6BEF0BEEE20B0FAB8F1BCD2B

KJME-2003-h.hwp

슬라이드 1

알고리즘 1장 기본개념

Microsoft PowerPoint - Chapter_09.pptx

제 3강 역함수의 미분과 로피탈의 정리

Chap 6: Graphs

Frama-C/JESSIS 사용법 소개

Chapter 4. LISTS

윈도우즈프로그래밍(1)

FBVWIKCWBMAZ.hwp

금오공대 컴퓨터공학전공 강의자료

04 Çмú_±â¼ú±â»ç

Microsoft PowerPoint - Lesson2.pptx

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

Microsoft PowerPoint - Java7.pptx

쉽게 풀어쓴 C 프로그래밍

1장. 리스트

PowerPoint 프레젠테이션

OCW_C언어 기초

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

3. 다음은카르노맵의표이다. 논리식을간략화한것은? < 나 > 4. 다음카르노맵을간략화시킨결과는? < >

Transcription:

정보 Sangwook Lee Deogi High School

III 문제해결과프로그래밍 1 추상화 2 알고리즘 3 프로그래밍

2 알고리즘 2-1 알고리즘설계 2-2 알고리즘분석 3

2-1 알고리즘설계 (p.108) 학습목표 순차, 선택, 반복구조의흐름을설명할수있다. 다양한제어구조를활용하여논리적이고효율적인알고리즘을설계할수있다. 4

[1] 알고리즘제어구조 (p.109) 알고리즘 (algorithm) 이란 문제를해결하기위한논리적인절차나방법 생활속의알고리즘 자동판매문제를해결하기위한자판기를작동시키는절차 배고픔의문제를해결하기위한음식을배달시켜먹는절차 5

[1] 알고리즘제어구조 (p.109) 알고리즘의조건 입력과출력이있어야한다 처리과정이명확해야한다 실행가능해야한다 종료되어야한다 배고픔해결알고리즘에서입출력은 음식선택, 음식값지불, 음식도착등이해당 6

[1] 알고리즘제어구조 (p.109) 알고리즘표현방법 자연어 순서도 의사코드 프로그래밍언어 7

[1] 알고리즘제어구조 (p.109) 순서도 기호 ( 도형 ) 를사용하여알고리즘을표현하는방법 ( 또는표현한것 ) < 제기능을하지않는램프를다루기위한순서도 > 8

[1] 알고리즘제어구조 (p.109) 단말 순서도에사용되는기호 ( 도형 ) 의의미 단말 반복 C 언어의 for 반복구조를표현 처리 흐름 입출력 read, print 등표시하여입출력구분필요 준비 변수선언및초기화 판단 출력 선택이나반복구조를만들때사용 편리함과가독성을위해출력시사용권장 9

[1] 알고리즘제어구조 (p.109) 의사코드 (pseudo-code) 란 일반적인 ( 일상적인 ) 언어를사용하여프로그래밍언어를흉내내어알고리즘을표현하는방법 ( 또는작성한코드 ) <C 스타일의사코드 > 아침이올때까지할일을작성한의사코드 10

[1] 알고리즘제어구조 (p.109) 알고리즘속에존재하는작업처리흐름유형 순차적처리흐름 선택적처리흐름 반복적처리흐름 순차선택반복 < 알고리즘속작업처리흐름 > 11

[1] 알고리즘제어구조 (p.109) 제어구조란 처리흐름을제어하는 ( 표현하는 ) 알고리즘속문장구조 알고리즘을작성하는과정은제어구조를만들어가는과정 알고리즘을표현하는방법에따라문장구조가아니라도형구조가될수있음 12

[1] 알고리즘제어구조 (p.109) 제어구조종류 순차 ( 제어 ) 구조 순차적처리흐름을표현하는구조 작업을제시된순서대로처리해야될때사용 선택 ( 제어 ) 구조 선택적처리흐름을표현하는구조 조건에따라여러작업중하나를선택하여처리해야될때사용 반복 ( 제어 ) 구조 반복적처리흐름을표현하는구조 조건에따라특정작업을반복하여처리해야될때사용 13

[1] 알고리즘제어구조 (p.109) < 순서도로표현한제어구조 > 14

[2] 알고리즘설계와작성 (p.110) 순차구조가사용되는경우 <1 부터 100 까지의합을구하는알고리즘 > 15

[2] 알고리즘설계와작성 (p.110) 선택구조가사용되는경우 < 일기예보의강수확률을보고, 우산을준비하는알고리즘 > 16

[2] 알고리즘설계와작성 (p.110) 반복구조가사용되는경우 < 전자레인지를작동하여음식을조리하는알고리즘 > 17

함께해결하기 (p.111) 순차, 선택, 반복구조를찾아표시해보자. 선택구조 반복구조 순차구조 순차구조는한작업에서한작업으로만진행가능하고이전작업으로돌아갈수없는구조 선택이나반복구조를하나의처리단위로보았을때전체적으로순차구조를가짐 18

2-2 알고리즘분석 (p.112) 학습목표 동일한문제에대해다양한해결전략과방식이있음을설명할수있다. 알고리즘의성능을수행시간의관점에서비교하고분석하여, 어떤방식이더효율적인지설명할수있다. 19

[1] 동일한문제에대한다양한알고리즘 (p.113) 동일한문제에대한다양한알고리즘존재 장소이동문제해결방법 배고픔해결문제해결방법 20

[1] 동일한문제에대한다양한알고리즘 (p.113) 1 부터 100 까지자연수의합을구하는알고리즘 알고리즘 1 알고리즘 2 21

[1] 동일한문제에대한다양한알고리즘 (p.113) 알고리즘 1 알고리즘 2 덧셈을반복적으로수행하는 반복구조를사용 덧셈, 곱셈, 나눗셈연산을 한번만수행하는 순차구조를사용 알고리즘 2 는가우스덧셈공식을이용하여 1 부터 100 까지정수의합을구함 22

[2] 수행시간의관점에서성능분석 (p.114) 정렬이란 자료를일정한기준에의해나열하는것 정렬순서 오름차순정렬 작은것부터 내림차순정렬 큰것부터 자료를정렬하는이유 필요한자료를효율적으로탐색하기위해 23

[2] 수행시간의관점에서성능분석 (p.114) 정렬알고리즘종류 버블 (bubble) 정렬 선택 (selection) 정렬 < 다양한정렬알고리즘 > 24

[2] 수행시간의관점에서성능분석 (p.114) 버블정렬이란 ( 오름차순 ) 인접한 2개의자료를비교하면서가장큰자료를맨뒤로보내는정렬방식 버블정렬이라고하는이유는? 데이터가교환되면서이동하는모양이 물속의거품 (bubble) 이보글보글떠오르는모양과유사하기때문 25

[2] 수행시간의관점에서성능분석 (p.114) 버블정렬알고리즘 ( 오름차순 ) 1 정렬이안된자료들중에서앞쪽부터인접한두개의자료를비교하여앞의자료가더크면위치를교환하는작업을반복하면서가장큰자료를맨뒤로보냄 2 정렬되지않은나머지값들에대해 1 반복 26

[2] 수행시간의관점에서성능분석 (p.114) 버블정렬예 정렬전자료 n 개의자료를버블정렬시가장큰자료를맨뒤로보내는작업을 n-1 번반복하면정렬완료 27

[2] 수행시간의관점에서성능분석 (p.114) 버블정렬예 1 단계 : 가장큰자료를끝으로보내한개의자료를정렬하기 28

[2] 수행시간의관점에서성능분석 (p.114) 버블정렬예 2 단계 : 두번째큰자료를끝에서두번째로보내기 29

[2] 수행시간의관점에서성능분석 (p.114) 버블정렬예 3 단계 : 세번째큰자료를끝에서세번째로보내기 30

[2] 수행시간의관점에서성능분석 (p.114) 버블정렬예 4 단계 : 네번째큰자료를끝에서네번째로보내기 31

[2] 수행시간의관점에서성능분석 (p.114) 버블정렬예 정렬완료 4 단계정렬 3 단계정렬 2 단계정렬 1 단계정렬 비교횟수 : 10? 회 교환횟수 :? 7 회 32

[2] 수행시간의관점에서성능분석 (p.114) 버블정렬비교횟수 자료의개수가 n 개일때, 1 단계비교횟수 2단계 n-2단계 + + + + 비교횟수비교횟수 (n-1) + (n-2) + + 2 + 1 = n n 1 2 n-1 단계비교횟수 자료의교환은 이미정렬이되어있다면한번도일어나지않을수도있지만, 한단계에서 1 회이상일어날수있기때문에일반적으로 (n-1) 회이상일어남 33

[2] 수행시간의관점에서성능분석 (p.114) 버블정렬이처리속도가느린이유 앞쪽자료부터인접한자료를비교하여상호교환하는정렬방법으로자료의비교와교환이많이일어나기때문 34

[2] 수행시간의관점에서성능분석 (p.114) Bubble-sort with Hungarian folk dance 일반적인버블정렬알고리즘과차이점 1. 마지막두자료비교후교환이없으면두자료모두정렬된것으로간주 2. 어떤단계를종료할때까지교환이한번도없으면정렬이완료된것으로간주 35

[2] 수행시간의관점에서성능분석 (p.114) 버블정렬 C 코드 정렬을위해 0~4(5 단계 ) 반복지정 void main() { int data[6] = {5, 3, 8, 1, 2, 7}; int x, y, temp; for (x = 0; x <= 4; x++) { for (y = 0; y <= 4-x; y++) { } } if (data[y] > data[y+1]) { temp = data[y]; data[y] = data[y+1]; data[y+1] = temp; } x 값의 2 가지의미 ( 역할 ) 1 5 단계를반복하기위해증가하는수 2 비교하는두자료중앞자료의마지막위치를줄이는수 인접한두자료중앞자료의위치 (y) 를 1 씩증가 인접한두자료를비교하여앞자료가더크면변숫값교환 } printf(" 버블정렬결과 \n"); for (x = 0; x <= 5 ; x++) printf("%d ", data[x]); 36

[2] 수행시간의관점에서성능분석 (p.115) 선택정렬이란 ( 오름차순 ) 가장작은자료를선택하여첫번째자료와교환하는정렬방식 37

[2] 수행시간의관점에서성능분석 (p.115) 선택정렬알고리즘 ( 오름차순 ) 1 정렬이안된자료들중에서첫번째자료를 ( 임시 ) 최솟값으로지정하고최솟값과다음자료들을비교하여더작은자료를새최솟값으로지정하는과정을반복하면서가장작은자료를찾아서첫번째자료와교환 2 정렬되지않은나머지값들에대해 1 반복 최솟값위치 최솟값위치 38

[2] 수행시간의관점에서성능분석 (p.115) 선택정렬예 최솟값위치 39

[2] 수행시간의관점에서성능분석 (p.115) 선택정렬예 정렬완료 1 단계정렬 2 단계정렬 3 단계정렬 4 단계정렬 비교횟수 : 10? 회 교환횟수 :? 3 회 40

[2] 수행시간의관점에서성능분석 (p.115) 선택정렬비교횟수 자료의개수가 n 개일때, 1 단계비교횟수 2단계 n-2단계 + + + + 비교횟수비교횟수 (n-1) + (n-2) + + 2 + 1 = n n 1 2 n-1 단계비교횟수 자료의교환은 이미정렬이되어있다면한번도일어나지않을수도있지만, 한단계에서 0~1 회일어나기때문에일반적으로 (n-1) 회이하로일어남 41

[2] 수행시간의관점에서성능분석 (p.115) 선택정렬 C 코드 정렬을위해 0~4(5 단계 ) 반복지정 void main() { int data[6] = {5, 3, 8, 1, 2, 7}; int x, y, min, temp; x 값의 2 가지의미 ( 역할 ) 1 5 단계를반복하기위해증가하는수 2 각단계에서첫번째값의위치를나타내는수 for (x = 0; x <= 4; x++) { } min = x; for (y = x + 1; y <= 5; y++) { if (data[min] > data[y]) min = y; } temp = data[min]; data[min] = data[x]; data[x] = temp; 최솟값의위치를첫번째값의위치로임시지정 최솟값보다더작은값을찾으면해당값을새로운최솟값으로지정 } printf(" 선택정렬결과 \n"); for (x = 0; x <= 5 ; x++) printf("%d ", data[x]); 42

[2] 수행시간의관점에서성능분석 (p.116) 탐색이란 주어진자료들중에서원하는자료를찾는것 탐색알고리즘종류 순차탐색 (sequential search) 이진탐색 (binary search) 43

[2] 수행시간의관점에서성능분석 (p.116) 순차탐색 모든자료를처음부터끝까지하나씩순서대로비교하여조건에일치하는자료를찾는방법 첫번째자료부터차례로 8 이맞는지확인하여맞으면완료하고맞지않으면다음수를하나씩비교하는과정반복 <7 장의카드에서 8 이적힌숫자카드를순차탐색하는과정 > 44

[2] 수행시간의관점에서성능분석 (p.116) 이진탐색 정렬된자료를반으로나눈후, 찾는값이어느쪽에있는지파악해탐색의범위를반으로줄여가며자료를찾는방법 1 전체자료중에서중앙에있는 6 과찾을값 8 을비교 2 찾을값 8 이 6 보다크므로오른쪽에있는자료들을탐색 3 오른쪽자료중에서중앙에있는 8 과찾을값 8 을비교 4 중앙에있는 8 이찾을값 8 과같으므로탐색을종료 <7 장의카드에서 8 이적힌숫자카드를이진탐색하는과정 > 45

[2] 수행시간의관점에서성능분석 (p.116) 순차탐색 이진탐색 장점 알고리즘간단자료정렬불필요 속도빠름 단점 속도느림 알고리즘복잡자료정렬필요 기타자료수가적을때효과적자료수가많을때효과적 < 순차탐색과이진탐색비교 > 46

[2] 수행시간의관점에서성능분석 (p.116) 알고리즘빠르기판단기준 알고리즘속중요한연산의실행횟수 발생할수있는최악의연산횟수를사용 순차탐색비교연산횟수 이진탐색비교연산횟수 최상의경우 ( 한번에찾은경우 ) 1 1 최악의경우 ( 마지막에찾은경우 ) n log 2 n+1 <n 개의자료를탐색할때순차탐색과이진탐색의비교연산횟수 > 47

[2] 수행시간의관점에서성능분석 (p.116) 시간복잡도 (time complexity) 최악의연산횟수를계수가없는최고차항만으로표시한것 작을수록효율적인 ( 빠른 ) 알고리즘 예 ) n n 1 2 log 2 n + 1 n 2 log 2 n 48

[2] 수행시간의관점에서성능분석 (p.116) 시간복잡도크기비교 log 2 n n nlog 2 n n 2 이진탐색순차탐색퀵정렬버블, 선택정렬 49

함께해결하기 (p.117) 다음은우리모둠친구들의번호를조사한것이다. 물음에답하시오. 1. 친구들의번호를버블정렬과선택정렬을이용하여각각오름차순으로정렬한후, 비교횟수와교환횟수를알아보자. 구분 버블정렬 선택정렬 비교횟수 15 15 교환횟수 7 3 [19, 3] [19, 7] [19, 5] [8, 3] [8, 7] [8, 5] [7, 5] [3, 8] [5, 19] [7, 8] 첫번째자료가최솟값이면교환하지않는다고간주했을때 50

함께해결하기 (p.117) 다음은우리모둠친구들의번호를조사한것이다. 물음에답하시오. 2. 1 에서정렬된자료에서 19 를찾으려고한다. 순차탐색과이진탐색을활용하여각각탐색해보고, 비교횟수를적어보자. 구분순차탐색이진탐색 비교횟수 5 2 51

52