ݺߣ

ݺߣShare a Scribd company logo
알고리즘
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

알고리즘