# [알고리즘] 알고리즘에 대하여 01
2024. 12. 17. 21:52ㆍ알고리즘
2024.12.17 07:57
📌 본 포스팅은 파이썬으로 알고리즘을 구현하는 내용을 다룹니다.
1. 점근 표기법.
- 5050 을 구하는데 101 번계산, 50번계산 후자가 더 좋은 알고리즘이다.
- 빅오(Big-O) : 최악의 경우 연산량.
- ex) 배열 내에 특정 숫자가 존재 여부 ->True False 반환
arr = [3,5,6,1,2,4]
def is_number_exit(num,arr):
return True if num in arr else False
is_number_exit(3,arr) # True
is_number_exit(120,arr) # False
☞ 가장 좋을 때는 1번, 가장 나쁠때는 n 번 계산 O(1), O(n)
2.시공간 복잡도
- 알고리즘을 평가하는 법. 걸리는 시간, 설치시 용량이 적을 수록 빠름.
- 시간복잡도 낮음 = 빠름, 공간복잡도 낮음 = 저용량, 현대는 시간복잡도가 더 중요함.
- n^2 인지 n 인지 중요함. n 인지 2n 인지 n+3 인지는 중요하지 않다.
[문제1.] 숫자목록 최빈값과 빈도수 출력
def most_freq(numbers,method = 'O(n^2)'):
most_freq_num = 0
max_freq = 0
if method=='O(n^2)':
for first_num in numbers:
freq =0
for num in numbers:
if first_num ==num:
freq +=1
if freq >= max_freq:
max_freq = freq
most_freq_num = num
else : #O(n)
num = {}
for i in numbers:
# print(i,end=' ')
if i not in num.keys():
num[i] = 0
num[i]+=(1 if i in num.keys() else 0 )
print(num)
max_freq = 0
for key,item in num.items():
if item >=max_freq:
max_freq = item
most_freq_num =key
return most_freq_num, max_freq
most_freq([1, 2, 3, 2, 1, 3, 1, 4, 2, 1], method='1')
[문제2.] 문자열 팰린드롬(거꾸로해도 박도박)
def
'알고리즘' 카테고리의 다른 글
# [알고리즘] 해쉬테이블 구현하기 (0) | 2024.12.29 |
---|---|
#[알고리즘] Que 문제 (0) | 2024.12.28 |
# [알고리즘] Que 구현 (1) | 2024.12.28 |
# [알고리즘] 연결리스트로 구현한 펠린드롬 (2) | 2024.12.19 |
# [알고리즘] 알고리즘의 기초 연결리스트 편 (0) | 2024.12.18 |