파이썬 sw 문제해결 기본
완전검색
가능한 모든 순열을 나열해서 해답을 찾는 방식
ex) baby-gin
탐욕알고리즘 (Greedy Algorithm)
ex) 거스름돈 줄이기: 해 선택 → 실행가능성 검사 → 해 검사
ex) baby-gin
⇒ 탐욕알고리즘 접근은 해답을 찾지 못하는 경우도 있다
정렬 (Sort)
두개이상의 자료를 특정 기준에 의해 오름차순/내림차순으로 재배열하는것
버블정렬, 카운팅, 선택, 퀵, 삽입, 병합 등이 있음
버블정렬
인접한 두개의 원소를 비교하며 자리 교환
시간복잡도? O(n2)
def BubbleSort(a):
for i in range(len(a)-1, 0, -1):
for j in range(0, i):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
카운팅 정렬
집합에 각 항목이 몇개있는지 세는 작업을 하는 효율적인 알고리즘
정수형 자료에만 적용 가능
시간복잡도? O(n+k)
ex) [0, 4, 1, 3, 1, 2, 4, 1]
- 각 항목의 발생 회수를 세고 이를 count list에 저장:
[1, 3, 1, 1, 2]
- 앞에 위치할 항목 개수를 반영하기 위해 count list의 원소를 조정? 앞의 항목의 개수를 count_list에 더함. :
[1, 4, 5, 6, 8]
- 데이터 마지막부터 적용: count list[1]을 감소시키고 TEMP에 1을 삽입? 마지막 숫자가 1이므로 count list의 1 자리를 1 감소 (4-1=3) ⇒ TEMP data의 4번째 (1+3)에 1 적어줌
- 이전 과정을 반복
'etc' 카테고리의 다른 글
개발자 커뮤니티 (및 페이스북 그룹 등) 정리 - ver.01 (0) | 2018.10.21 |
---|---|
IOS 10 이상에서 홈버튼 고장시 초기화하기 (0) | 2018.10.05 |
웹사이트 속도 측정하기: 괜찮은 5가지 사이트 추천 (0) | 2017.12.16 |
비밀번호 tool, Vault 사용법 (0) | 2017.10.10 |
Using Sox, ffmpeg (python audio tools) in mac (0) | 2017.10.10 |