최빈값 찾기
for char in string:
if not char.isalpha():
continue
arr_index = ord(char) - ord('a')
alphabet_occurrence_array[arr_index] += 1
max_occurrence = 0
max_alphabet_index = 0
for index in range(len(alphabet_occurrence_array)):
alphabet_occurrence = alphabet_occurrence_array[index]
if alphabet_occurrence > max_occurrence:
max_occurrence = alphabet_occurrence
max_alphabet_index = index
return chr(max_alphabet_index + ord('a'))
chr() : 아스키코드 to 실제 문자
ord() : 문자 to 아스키코드
시간복잡도
시간이 얼마나 걸리는가?
-array의 길이 : N
-N이 커질수록 N과 N제곱의 차이가 커짐 -> N의 지수를 먼저 비교하기
-상수는 큰 영향이 없다.
공간복잡도
알고리즘을 개선할 때, 공간을 희생해서라도 시간복잡도를 간단하게 만드는 데에 신경써야 함.
점근표기법
-빅오표기법, 빅오메가표기법
알고리즘은 입력값의 분포에 따라 성능이 변화할 수 있다.
빅오 표기법으로 분석하는 이유 : 최악의 경우에 시간이 얼마나 소요될지를 대비해야하기 때문.
'✕' 혹은 '+' 연산자를 넣어 결과적으로 가장 큰 수 구하기
0과 1은 곱하기보다 더하는 것이 큰 수를 구하는데 이득.
-> 0과 1을 만나면 (1 이하의 수) + , 나머지를 만나면 x
def find_max_plus_or_multiply(array):
multiply_sum = 0
for number in array:
if number <= 1 or multiply_sum <= 1:
multiply_sum += number
else:
multiply_sum *= number
return multiply_sum
array (배열)
-메모리 공간에서 연속적으로 저장되어 있는 자료구조
-배열의 크기를 변경하려면 재생성해야함.
-연속적, 순착적으로 접근할 때 용이.
-시간복잡도 : 탐색0(1) / 순차적으로 탐색 0(n)
배열 처음 또는 중간에 삽입 및 삭제 : 0(1) / 배열 끝에 삽입 및 삭제 : 0(1)
linked list (연결리스트)
-노드들이 순차적으로 연결된 형태를 갖는 자료구조
-각 노드는 데이터와 다음 노드를 가리키는 포인터로 이루어져있음.
-연속적이지 않음, 삽입, 삭제에 용이.
-시간복잡도 : 탐색0(n)
삽입 및 삭제 : 0(1) / 연결리스트의 중간에 삽입 및 삭제 : 0(n) / 연결리스트 끝에 삽입 및 삭제: 포인터 갖는 경우:0(1) / 포인터 갖지 않는 경우:0(n)
-클래스는 데이터나 처리의 정의 등을 하나로 정리해둔 모형
클래스를 사용하는 이점 : 글로벌 변수를 없애고, 모든 변수를 어떠한 스코프에 소속시킨다. 몇 번이고 재사용할 수 있다. 코드의 수정을 최소화한다.
함수 실행중에, 함수 자신을 다시 호출하는 처리 등이 가능하게 하다.
즉, 자료구조에서 관리하고있는 정보들 중 하나를 저장하고 있는 단위
노드는 아래 두 가지 정보가 필요
1) 칸에 있는 데이터
2) 다음 칸이 뭔지
열심히 공부하고 노력하는 모습 보기 좋습니다!! 계속 화이팅입니다!!