SlideShare a Scribd company logo
1 of 79
Download to read offline
알고리즘
DevRookie
요술같은솜씨
많은 것을 알아야 한다.
창의 적인 생각을 표현하고
구현하는 능력
다양한 상황에서의 문제 해결 능력을 키우고
프로그램의 좋고 나쁨을 판단하여
더 좋은 프로그램을 만들기 위해
Topic Selection?
기본에 충실해져 보자.
알고리즘?
문제나 과제를 해결하기 위한 처리 절차를 하나하나 구체적인
순서에 따라 표현한 아이디어나 생각, 방법을 의미한다.
기획 설계 프로그래밍 디버깅 문서 작성
알고리즘?
알고리즘은 이 단계에서 필요하다.
프로그램은 크게 기획, 설계, 프로그래밍, 디버깅, 문서 작성이라는
단계를 거쳐 진행 된다.
자료구조 - 어떤 형태로 표현 될 것인가?
알고리즘 – 표현된 일을 어떻게 처리할 것인가?
알고리즘?
알고리즘 = 설계도
알고리즘?
알고리즘?
알고리즘?
요리의 레시피, 가전 제품 등의 사용 설명서는 알고리즘의 예
알고리즘?
절차대로 상세하게 적혀있다.
순서대로 만들어나가면 누구나 맛있는 요리가 완성!
알고리즘?
로봇청소기에게 청소 라는 일을 분해하여 순서대로 실행하도록 절차를 지시
알고리즘?
알고리즘을 프로그래밍 언어로 작성한 것이 프로그램
알고리즘을 기술하는 방법에는 프로그래밍 언어 외에도
순서도, psuedo code 등이 있다.
알고리즘?
알고리즘 성능 분석
하나의 문제
알고리즘 성능 분석
여러가지 해결 방법
알고리즘 성능 분석
효율적인 알고리즘을 찾고, 사용 해야 한다.
- 빠르게(시간 복잡도) : 수행시간 분석
- 값싸게(공간 복잡도) : 수행시 필요로 하는 메모리 공간 분석
알고리즘 성능 분석
Big O Noration Ω(오메가)표기법
Θ(세타)표기법
시간의 효율성
알고리즘 성능 분석
문제를 해결하는데 무한대의 시간을 사용할 수는 없다.
알고리즘 성능 분석
공간의 효율성
알고리즘 성능 분석
무한대의 메모리를 사용할 수 없으므로 효율적으로 사용해야한다.
알고리즘 성능 분석
코드의 효율성
알고리즘 성능 분석
좋은 알고리즘이란 ?
알기 쉽고, 속도가 빠르고, 효율적이며, 재사용하기 쉽다.
알고리즘 성능 분석
입력 : 외부에서 제공되는 데이터가 0 개 이상 존재한다.
출력 : 적어도 한 가지 이상의 결과를 생성한다.
명확성 : 각 명령은 명확하고 모호하지 않아야 한다.
유한성 : 알고리즘을 수행하면 일정 단계 뒤에는 반드시 종료 된다.
유효성 : 원칙적으로 모든 명령들은 기본적인 것이어야 한다
알고리즘의 특성
알고리즘의 특성
선형 탐색법은 맨 앞부터 순서대로 조사하여 찾는 탐색 알고리즘이다.
선형 탐색법 < Linear searcH >
탐색 시작
일치하고 있는지 비교
0 1 2 3 4
7 7 7 7 7
5 3 7
찾고 있는 정보와 일치하면 종료
선형 탐색법 절차
aRRAY
찾을 정보 7
시작
0 -> i
Array[i] = 7
i + 1 -> i
i < 7
찾기 실패 출력
종료
i번째 요소 일치 출력
선형 탐색법 순서도
No
Yes
이진 탐색법 < binary searcH >
탐색하는 범위를 줄여가며 원하는 데이터를 찾는 알고리즘이다.
이진 탐색법 < binary searcH >
정렬된 데이터가 아니면 적용이 불가능 하다.
이진 탐색법 < binary searcH >
1. 가운데 요소를 선택하는 처리
2. 가운데 데이터와 원하는 데이터를 비교하는 처리
3. 탐색 범위를 절반으로 좁히는 처리
이진 탐색법 < binary searcH >
11 13 17 19 23 29 31
17찾는 데이터
1. 가운데에 있는 값을 확인한다.
찾는 데이터가 가운데에 있는 값보다 적으므로,
탐색 범위를 앞의 절반으로 좁힌다.
이진 탐색법 < binary searcH >
11 13 17 19 23 29 31
17찾는 데이터
2. 다시 가운데 값을 살펴본다.
찾는 데이터가 가운데에 있는 값보다 크기때문에,
탐색 범위를 뒤의 절반으로 좁힌다.
이진 탐색법 < binary searcH >
11 13 17 19 23 29 31
17찾는 데이터
3. 다시 가운데 값을 살펴본다.
데이터를 찾았다.
가운데 값과 비교하여 일치하지 않으면 앞이나 뒤에 있다는 방식으로
탐색 범위를 절반으로 좁혀나가는 것이다.
해시 탐색법 < hash searcH >
데이터의 내용과 저장한 곳의 요소를 미리 연계해 둠으로써 극히 짧은 시간안에
탐색할 수 있도록 고안된 알고리즘이다.
해시 탐색법 < hash searcH >
1. 미리 탐색하기 쉽도록 공을 보관한다.
15 23 11 26
공을 넣은 칸의 번호 = 공의 숫자 % 7
해시 탐색법 < hash searcH >
2. 해시 탐색으로 값을 찾기
15 23 11 26
찾고 있는 공의 숫자 % 7 = 공이 들어 있는 칸의 번호
전체 원소들 중 위치에 맞는 원소를 선택해 자리를 교환하는 방식으로
구현하는 정렬 알고리즘 이다.
선택 정렬
1. 주어진 리스트에서 최소값을 선택
선택 정렬
74 22 42 2 17 7 69 33Target
2 22 42 74 17 7 69 33
선택 정렬
74 22 42 2 17 7 69 33before
after
2. 선택한 값을 맨 앞에 위치한 값과 교환한다.
2 7 42 74 17 22 69 33
선택 정렬
2 22 42 74 17 7 69 33before
after
3. 정렬된 값을 제외한 나머지 리스트를 대상으로 교환을 반복
인접한 데이터를 비교하여 자리를 교환하는 처리를 반복하여
전체를 정렬 하는 알고리즘이다.
버블 정렬
22 74 42 2 17 7 69 33
버블 정렬
74 22 42 2 17 7 69 33before
after
1. 인접한 데이터를 비교해서 정렬이 되어 있지 않을 경우 정렬
22 42 74 2 17 7 69 33
22 74 42 2 17 7 69 33
22 42 2 17 7 69 33 74
버블 정렬
before
after
2. 처음 과정을 반복하여 가장 큰 값을 가장 마지막으로 정렬
result
22 42 2 17 7 69 33 74
2 7 17 22 33 42 69 74
22 42 2 17 7 33 69 74
버블 정렬
before
after
3. 마지막에 정렬된 값을 제외한 나머지 리스트를 대상으로 앞의 과정을 반복
result
정렬되어있는 부분집합에 올바른 순서가 되도록 새로운 데이터의
위치를 찾아 삽입하는 방식으로 정렬하는 알고리즘이다.
삽입 정렬
22 74 42 2 17 7 69 33
삽입 정렬
74 22 42 2 17 7 69 33before
after
1. 두 번째 리스트를 첫 번째 리스트와 비교하여 적절한 위치에 삽입한다.
22 42 74 2 17 7 69 33
삽입 정렬
74 22 42 2 17 7 69 33before
after
2. 리스트의 끝까지 삽입한다.
데이터를 대소 그룹 둘로 나누어 분해한 후 전체를 정렬하는 방식의
알고리즘 이다.
퀵 정렬
퀵 정렬
5 4 7 6 8 3 1 2 9
리스트의 첫번째를 기준값으로 설정한다.
5 4 7 6 8 3 1 2 9
3 1 4 2 5 8 6 7 9
퀵 정렬
기준값보다 작은 경우
기준값의 앞에 배치
기준값보다 큰 경우
기준값의 뒤에 배치
3 4 2 1
2 1 3 4
퀵 정렬
위치가 정해짐. 더 정렬할 대상이 없다.
기준값보다 작은 경우의 수 정렬
2 1
1 2
퀵 정렬
위치가 정해짐.더 정렬할 대상이 없다.
8 6 7 9
7 6 8 9
퀵 정렬
위치가 정해짐. 더 정렬할 대상이 없다.
기준값보다 큰 경우의 수 정렬
7 6
6 7
퀵 정렬
위치가 정해짐.더 정렬할 대상이 없다.
기준 값을 선택한 후 그보다 작은 그룹과 큰 그룹으로 나눈다는 과
정을 반복함으로써 정렬하는 알고리즘이다.
에라토스테네스의 체
소수를 효율적으로 찾아내는 알고리즘.
2 - 소수
3 - 소수
4 - 2로 나눌수 있다.( = 2 X 2 )
5 - 소수
6 - 2와 3으로 나눌 수 있다. ( = 2 X 3 또는 3 X 2 )
7 - 소수
8 - 2와 4로 나눌 수 있다. ( = 2 X 4 또는 4 X 2 )
9 - 3으로 나눌 수 있다. ( = 3 X 3 )
10 - 2와 5로 나눌 수 있다. ( = 2 X 5 또는 5 X 2 )
에라토스테네스의 체
소수는 2 이상의 정수에서 1 과 그 수 자체로만 나눌 수 있는 수다.
에라토스테네스의 체
ex) 100 이하의 소수 찾기
1 ) 2 이외 2의 배수를 모두 지운다.
2) 3 이외 3의 배수를 모두 지운다.
3) 5 이외 5의 배수를 모두 지운다.
4) 7 이외 7의 배수를 모두 지운다.
> 남아있는 수가 소수.
Algorithm E.N.D
알고리즘 공부를 통해 끝임없이 진화하는 개발자가 되자.
알고리즘
알고리즘

More Related Content

Similar to 알고리즘

Shell, merge, heap sort
Shell, merge, heap sortShell, merge, heap sort
Shell, merge, heap sortHyun Jin Moon
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율S.O.P.T - Shout Our Passion Together
 
프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.Young-Beom Rhee
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트S.O.P.T - Shout Our Passion Together
 
[소프트웨어교육] 알고리즘 교사 연수 자료
[소프트웨어교육] 알고리즘 교사 연수 자료[소프트웨어교육] 알고리즘 교사 연수 자료
[소프트웨어교육] 알고리즘 교사 연수 자료Sangsu Song
 
[Swift] Data Structure - Heap
[Swift] Data Structure - Heap[Swift] Data Structure - Heap
[Swift] Data Structure - HeapBill Kim
 
Machine learning bysogood
Machine learning bysogoodMachine learning bysogood
Machine learning bysogoodS.Good Kim
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regressionHaesun Park
 
3.neural networks
3.neural networks3.neural networks
3.neural networksHaesun Park
 
[Algorithm] Quick Sort
[Algorithm] Quick Sort[Algorithm] Quick Sort
[Algorithm] Quick SortBill Kim
 
[Algorithm] Insertion Sort
[Algorithm] Insertion Sort[Algorithm] Insertion Sort
[Algorithm] Insertion SortBill Kim
 
110120 binary search
110120 binary search110120 binary search
110120 binary searchYeayoung Ha
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7KoChungWook
 
what is deep learning?
what is deep learning? what is deep learning?
what is deep learning? PartPrime
 
RPG Maker와 Ruby로 코딩 시작하기 Day 2
RPG Maker와 Ruby로 코딩 시작하기 Day 2RPG Maker와 Ruby로 코딩 시작하기 Day 2
RPG Maker와 Ruby로 코딩 시작하기 Day 2Sunwoo Park
 

Similar to 알고리즘 (20)

Shell, merge, heap sort
Shell, merge, heap sortShell, merge, heap sort
Shell, merge, heap sort
 
sort algorithim
sort algorithimsort algorithim
sort algorithim
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
 
프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.프론트엔드스터디 E03 - Javascript intro.
프론트엔드스터디 E03 - Javascript intro.
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
[SOPT] 데이터 구조 및 알고리즘 스터디 - #01 : 개요, 점근적 복잡도, 배열, 연결리스트
 
[소프트웨어교육] 알고리즘 교사 연수 자료
[소프트웨어교육] 알고리즘 교사 연수 자료[소프트웨어교육] 알고리즘 교사 연수 자료
[소프트웨어교육] 알고리즘 교사 연수 자료
 
[Swift] Data Structure - Heap
[Swift] Data Structure - Heap[Swift] Data Structure - Heap
[Swift] Data Structure - Heap
 
Machine learning bysogood
Machine learning bysogoodMachine learning bysogood
Machine learning bysogood
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regression
 
3.neural networks
3.neural networks3.neural networks
3.neural networks
 
[Algorithm] Quick Sort
[Algorithm] Quick Sort[Algorithm] Quick Sort
[Algorithm] Quick Sort
 
[Algorithm] Insertion Sort
[Algorithm] Insertion Sort[Algorithm] Insertion Sort
[Algorithm] Insertion Sort
 
Binary search
Binary searchBinary search
Binary search
 
110120 binary search
110120 binary search110120 binary search
110120 binary search
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7
 
6. Sorting
6. Sorting6. Sorting
6. Sorting
 
06. sorting
06. sorting06. sorting
06. sorting
 
알고리즘
알고리즘알고리즘
알고리즘
 
what is deep learning?
what is deep learning? what is deep learning?
what is deep learning?
 
RPG Maker와 Ruby로 코딩 시작하기 Day 2
RPG Maker와 Ruby로 코딩 시작하기 Day 2RPG Maker와 Ruby로 코딩 시작하기 Day 2
RPG Maker와 Ruby로 코딩 시작하기 Day 2
 

알고리즘