데이터 타입
-문자열(str)
-리스트(list)
-사전(dict)
-순서쌍(tuple), 집합(set), ...
자료구조(data structures)은 왜 알아야 하는가?
: 해결하고자 하는 문제에 따라(응용 종류와 범위에 따라)최적의 해법은 서로 다르다!
->이 선택을 어떻게 해야 하느냐를 알기 위해 자료구조를 이해해야 함
알고리즘이(algorithm)란?
[사전적 정의] 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합
[프로그래밍] 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택
선형배열(Linear Arrays)
-배열(Arrays) : 원소들을 순서대로 늘어놓은 것
-리스트(List) : 아무런 타입의 데이터라도 배열을 세울 수 있음
리스트(배열)연산 -->순식간에 할 수 있는 일(리스트의 길이와 무관)
(1)원소 덧붙이기 : array.append()
(2)끝에서 하나의 원소 꺼내기 : array.pop()
리스트(배열)연산 -->리스트의 길이가 길면 오래 걸림(리스트의 길이에 비례)
(1)원소 삽입하기 : array.insert(a,b) #a번째 자리에 b를 삽입
(2)원소 삭제하기 : array.del()
리스트(배열)연산
(1)원소 탐색하기 : array.index()
배열 : 정렬과 탐색(Sorting & Searching)
정렬(sort) : 배열의 원소들을 정해진 기준, 규칙에 따라 새로 늘어놓는 작업
Python 리스트의 정렬
(1) sorted()
-내장함수(built-in function)
-정렬된 새로운 리스트를 얻어냄
(2)sort()
-리스트의 메서드(method)
-해당 리스트를 정렬함
(3)정렬의 순서를 반대로 : reverse
정렬:문자열로 이루어진 리스트의 경우 정렬 순서는 사전순서(알파벳 순서)를 따름 (문자열 길이가 긴 것이 더 큰 것이 아님)
문자열 길이 순서로 정렬하려면?->정렬에 이용하는 키(key)지정
L.sort(key=lamda x:x['score'], reverse=True)
--> 레코드들을 점수 높은 순으로 정렬
탐색 알고리즘(1) - 선형탐색(Linear Search)
-리스트의 길이에 비례하는 시간 소요 -> O(n)
-최악의 경우 : 모든 원소를 다 비교해 보아야 함...
탐색 알고리즘(2)-이진탐색(Binary Search)
-탐색하려는 리스트가 이미 정렬되어있는 경우에만 적용 가능
-크기순으로 정렬되어 있다는 성질 이용