일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- MyPick31
- passport.js
- ART_Cinema
- 북마크만들기
- Django Blog
- 자바스크립트
- mongodb
- 개발
- Exercism
- 독립영화플랫폼
- 장고 프로젝트 순서
- join()
- 장고
- python
- 장고 프로젝트
- 장고 개발 순서
- Blog
- 북마크앱
- 파이썬 웹프로그래밍 장고
- 프로젝트
- 예술영화추천
- til
- Algorithm
- Node.js
- JavaScript
- 알고리즘
- 타사인증
- Django
- Bookmark
- MYSQL
- Today
- Total
목록CodingTest/Algorithm theory (5)
Juni_Dev_log
시간 복잡도 시간 복잡도란 알고리즘이 문제를 해결하기 위한 시간(연산)의 횟수를 말한다. 알고리즘을 평가하는데 있어 수행시간과 메모리 사용량을 평가기준으로 두는데, 수행시간에 해당하는 것이 "시간 복잡도(Time Complexity)" / 메모리 사용량에 해당하는 것이 "공간 복잡도(Space Complexity)" 이다. 연산 횟수를 카운팅 할 때 3가지 경우가 있다. 1. 최선의 경우 Best Case 2. 최악의 경우 Worst Case 3. 평균적인 경우 Average Case 평균적인 경우가 가장 이상적으로 보이겠지만 알고리즘이 복잡해질수록 평균적인 경우는 구하기가 매우 어려워진다. 그러므로, 최악의 경우로 알고리즘의 성능을 파악한다. 2-1 Program Step 에서 Elementary Op..
공간 복잡도 - 알고리즘 계산 복잡도는 다음 두 가지 척도로 표현할 수 있다. 1. 시간 복잡도 : 얼마나 빠르게 실행되는지 2. 공간 복잡도 : 얼마나 많은 저장 공간이 필요하는지 좋은 알고리즘은 실행 시간도 짧고, 저장 공간도 적게 쓰는 알고리즘이다. - 통상 둘 다 만족시키기는 어렵다. : 시간과 공간은 반비례적인 경향이 있음 : 최근 대용량 시스템이 보편화되면서 공간복잡도 보다는 시간복잡도가 우선이 되었다. : 그래서 알고리즘은 "시간 복잡도" 가 중심이다. 공간 복잡도의 대략적인 계산이 필요함 - 기존 알고리즘 문제는 예전에 공간 복잡도도 고려되어야할 때 만들어진 경우가 많다. - 그래서 기존 알고리즘 문제에 시간 복잡도뿐만 아니라, 공간 복잡도 제약 사항이 있는 경우가 있다. - 또한, 기존 ..
동적 계획법이란? 동적 계획법(Dynamic Programming)은 일반적으로 문제를 풀기 위해서, 문제를 여러 개의 작은 문제로 쪼개서, 그 값들을 결합하여 최종적인 결과를 얻는 것이다. 그러기 위해서, 각 하위 문제들의 값을 별도의 변수 등에 저장해서 필요할 때마다 꺼내 쓰는 것이다. 이러한 것을 보여주는 예시로 피보나치 수열을 들 수 있다. 1 2 3 4 5 6 7 def fibonacci(n): if n == 0: return 0 if n == 1 or n == 2: return 1 else: return fibonacci(n-1) + fibonacci(n-2) cs 피보나치 수열을 재귀함수를 이용해서 구현하면 정말 쉽게 구현할 수 있다. 하지만, 효율성 측면에서 보면 좋은 코드는 아니다. 위 ..
결과는 같은데, 과정은 다르며, 이에 따른 여러가지 알고리즘이 있다. 이처럼 다양한 알고리즘도 성능이 제 각각이다. 그렇기 때문에 좋은 성능의 알고리즘을 고르는 것이 굉장히 중요하다. 가장 좋은 알고리즘을 고르기 위해서는 알고리즘의 효율성을 따지는 데 이 때 두 가지로 나눌 수 있다. 시간적 효율성 (얼마나 이 알고리즘이 빠른가) / 공간적 효율성(메모리를 얼마나 차지하는가) => 얼마나 빠른 시간으로 처리하는가 ('시간 복잡도') / 얼마나 메모리를 차지하는가 ('공간 복잡도') 알고리즘의 속도에 영향을 주는 요소는 굉장히 많지만, 제일 영향을 많이 주는 것은 '입력이 n일 때 연산 횟수' 이다. 예를 들어, 1~100 까지 순서대로 더하는 프로그램과 1~1000까지 순서대로 더하는 프로그램을 만들었다..