제로베이스

· 자료구조
[ index( arg1, arg2, arg3 ) ] index( '찾는 값' ) 을 쓰면, 인덱스를 반환해준다. ( 문자열에서는 find() 함수가 있었다. ) mylist = ['홍길동','박찬호','이용규','강호동'] print(mylist.index('강호동')) #3 단순히 첫번째 값이 아니라 2번째, 3번째 의 값이 궁금하다면 다음과 같이 인덱스 함수를 활용해 줄 수 있다. mylist = ['홍길동','박승철','박찬호','이용규','강호동', '박승철','홍길동','박승철'] cnt = 0 # 박승철 3개를 찾아보자. idx = -1 while cnt < 3 : idx = mylist.index('박승철',idx+1,) print(f'{idx} 에 위치합니다.') cnt += 1 ''' ..
· 자료구조
[ sort() ] sort() 함수는 리스트를 오름차순으로 정렬된다. sort(reverse=True) 함수는 리스트를 내림차순으로 정렬한다. mylist = [1,2,3,49,23,43,23,3,5] mylist.sort() print(mylist) mylist.sort(reverse=True) print(mylist) # [1, 2, 3, 3, 5, 23, 23, 43, 49] # [49, 43, 23, 23, 5, 3, 3, 2, 1] [reverse()] 정렬과는 아무런 관계가 없다. 순서를 서로 바꾸는 함수이다. name = ['홍길동','강호동','박찬호','고길동'] name.reverse() print(name) # ['고길동', '박찬호', '강호동', '홍길동'] [실습1] 암호 해독..
· 알고리즘
[퀵정렬] 기준보다 작은 값과 큰 값을 분리한 후 다시 합친다. 일반적인 상황에서 가장 많이 사용되는 정렬 알고리즘 중 하나이다. 병합 정렬과 더불어 정렬 라이브러리의 근간이 되는 알고리즘이다. 가장 기본적인 퀵 정렬은 첫번째 데이터를 기준 데이터(Pivot)로 설정한다. 이상적인 경우, 분할이 절반씩 일어난다면 전체 연산 횟수로 \( O(N*logN) \)을 기대할 수 있다. 평균적으로 퀵 정렬은 \( O(N*logN) \)의 시간 복잡도를 갖는다. 그러나 최악의 경우, 분할이 일어나지 않아 \( O(N^2) \)의 시간 복잡도를 가질 수 있다. ( 기본 라이브러리를 통한 정렬은 최악의 경우를 고려한 설계가 되어있기 때문에 항상 늘 \(O(N*logN)\)을 보장해니 안심하도록 하자. ) 삽입정렬과 달..
· 알고리즘
[병합 정렬] 자료 구조를 분할하고 각각의 분할된 자료구조를 정렬한 후, 다시 병합하여 정렬한다. 병합 정렬은 정확히 반절씩 나눈다는 점에서 늘 항상 \( O(N*logN) \) 의 시간 복잡도를 가집니다. 퀵 정렬의 경우 피벗 값에 따라 편향되었을 때, 최악의 경우 \( O(N^2) \) 를 갖는다는 점에서 병합 정렬은 이보다 나은 장점을 갖는다. 하지만 그렇다고 해서 평균적으로 병합 정렬이 더 빠르다는건 아니다. 분할 단계 가로의 길이는 \(N\), 높이는 \( log_2N \) 이 됩니다. 처리하는 데이터의 갯수는 한번 쪼갤 때 마다, 2의 지수로 증가하기 때문에 N이 아니라 훨씬 적은 \( log_2N\) 만으로 처리 할 수 있게 된 것 입니다. 병합 단계 정렬하며 병합해갑니다. 이미 정렬이 되어..
scone
'제로베이스' 태그의 글 목록 (18 Page)