[알알알] week01 개념
시간복잡도란?
문제를 해결하는데 걸리는 시간과의 상관관계.
각 줄이 실행되는 걸 1번의 연산이 된다고 생각하면 됨.
array의 길이 보통 N! (반복문)
대입 연산, 비교 연산은 1번으로 침.
N이 몇 승인지, 지수를 보고 비교해야 함. (상수 신경쓰지 말고)
: 연산량에 비해서 어느 정도로 증가하는지만 파악하기!
공간복잡도란?
문제를 해결하는데 걸리는 공간과의 상관관계.
저장하는 데이터의 양이 1개의 공간을 사용한다.
(공간 복잡도보다 시간 복잡도에 더 신경쓰기 ! )
alphabet_array = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "x", "y", "z"] # -> 26 개의 공간을 사용합니다
max_occurrence = 0 # 1개의 공간을 사용합니다
max_alphabet = alphabet_array[0] # 1개의 공간을 사용합니다.
for alphabet in alphabet_array: # 돌면서 결국 1개의 값을 저장하게 됨.
occurrence = 0 # 1개의 공간을 사용합니다
점근표기법
알고리즘의 성능을 표기해 효율성을 평가하는 방식.
빅오: 최악의 성능이 나올때 (최악의 경우를 대비해야 하기 때문에 대부분 빅오 표기법 사용함)
빅 오메가: 최선의 성능이 나올 때
문자인지 확인
파이썬 내장 함수 str.isalpha() 사용하면 해당 문자열이 알파벳인지 확인 가능 > True/ False로 결과 나옴.
ex) s = "abcde"
print(s[0].isalpha()) #True
print("x".isalpha()) # True
빈도수 리스트에 저장하기
alphabet_occurrence_array = [0] * 26 <길이 26으로 초기화된 배열만들기
아스키(ASCII)코드 사용하기
컴은 문자도 숫자로 기억함. (0,1) 따라서 문자를 아스키코드로 변환해줘서 알게해줘야함.
- python char to ascii code(ord())
print(ord('a')) # 97 <a의 아스키 코드가 97이라는 뜻
print(ord('a') - ord('a')) # 0 < 인덱스 값 (문자의 ord값 - a의 ord값)
print(ord('b') - ord('a')) # 1 < 인덱스 값
- python number to char(chr()) # ASCII -> char
a -> 0 (문자 -> 인덱스)
a -> ord(a) -> 문자의 아스키 -ord(a) = 인덱스 값
0 -> a (아스키 -> 문자)
인덱스 값 -> 인덱스 값 +ord(a) -> 아스키 값 -> chr(97) -> a(문자)
index + ord('a') = 문자
chr(97) == 'a'
chr(0 + ord('a')) == 'a'
chr(0 + 97) == 'a'
chr(1 + 97) == 'b'
continue(코드 건너뛰기)
조건 a :
continue # 조건 a에 해당된다면 다음 인덱스로 넘어가기.
https://dojang.io/mod/page/view.php?id=2254
파이썬 코딩 도장: 18.2 continue로 코드 실행 건너뛰기
이번에는 continue를 사용하여 일부 코드를 실행하지 않고 건너뛰어 보겠습니다. 18.2.1 for에서 continue로 코드 실행 건너뛰기 다음은 for로 0부터 99까지 반복하면서 홀수만 출력합니다. continue_for.py
dojang.io