Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 타입스크립트
- 자바 while문
- java
- MySQL
- 자바 if문
- TypeScript
- 자바 강제 캐스팅
- 자바 반복문
- 조코딩
- 자바 삼항연산자
- Vue3
- react ag grid
- 항해99 2기
- react with typescript
- 자바 자동캐스팅
- 자바 public
- 자바 조건문
- 자바 for문
- 항해99
- 자바 스캐너
- 정보처리기사실기
- 프로그래머스
- 자바
- 자바 구구단 출력
- 변수
- 자바 향상된 for문
- 자바 switch문
- 자바 공배수
- Til
- 이클립스 DB연동
Archives
- Today
- Total
뇌 채우기 공간
[알고리즘] 공간복잡도 파악하기 본문
2021.06.12 - [알고리즘] - [알고리즘] 시간 복잡도 판단하기
[알고리즘] 시간 복잡도 판단하기
시간 복잡도란? 입력값과 문제를 해결하는데 걸리는 시간과의 상관관계이다. 입력값이 2배로 늘어났을때 문제 해결하는데 걸리는 시간은 몇배로 늘어날까? 입력값이 늘어나도 걸리는 시간은 덜
sso-feeling.tistory.com
공간복잡도란?
입력값과 문제를 해결하는데 걸리는 공간과의 상관관계이다.
입력값이 2배로 늘어났을때 문제를 해결하는데 걸리는 공간은 몇배로 늘어나는지를 보는 것이다.
입력값이 늘어나도 공간이 덜 늘어나는게 좋은 알고리즘이다!
저장하는 데이터의 양이 1개의 공간을 차지한다고 생각하고 계산한다
def find_max_occurred_alphabet(string):
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"]
max_occurrence = 0
max_alphabet = alphabet_array[0]
for alphabet in alphabet_array:
occurrence = 0
for char in string:
if char == alphabet:
occurrence += 1
if occurrence > max_occurrence:
max_alphabet = alphabet
max_occurrence = occurrence
return max_alphabet
result = find_max_occurred_alphabet
print("정답 = a 현재 풀이 값 =", result("Hello my name is sparta"))
print("정답 = a 현재 풀이 값 =", result("Sparta coding club"))
print("정답 = s 현재 풀이 값 =", result("best of best sparta"))
총 29의 공간이 사용되었다!
def find_max_occurred_alphabet(string):
alphabet_occurrence_list = [0] * 26
for char in string:
if not char.isalpha():
continue
arr_index = ord(char) - ord('a')
alphabet_occurrence_list[arr_index] += 1
max_occurrence = 0
max_alphabet_index = 0
for index in range(len(alphabet_occurrence_list)):
alphabet_occurrence = alphabet_occurrence_list[index]
if alphabet_occurrence > max_occurrence:
max_occurrence = alphabet_occurrence
max_alphabet_index = index
return chr(max_alphabet_index + ord('a'))
result = find_max_occurred_alphabet
print("정답 = a 현재 풀이 값 =", result("Hello my name is sparta"))
print("정답 = a 현재 풀이 값 =", result("Sparta coding club"))
print("정답 = s 현재 풀이 값 =", result("best of best sparta"))
30만큼의 공간을 사용한다
둘다 상수라서 여기에서는 적게 썼다고 더 효율적인 방법이라고 말할 수 없다.
그래서 비교를 시간 복잡도로 비교하면 된다.
대부분의 알고리즘 성능은 공간에 의해서 결정되지 않는다.
그래서 공간복잡도 보다는 시간 복잡도를 더 신경써야한다.
728x90
'알고리즘 > 이론' 카테고리의 다른 글
[알고리즘] 링크드 리스트 append 구현 (0) | 2021.06.13 |
---|---|
[알고리즘] 문자열 뒤집기 python (0) | 2021.06.12 |
[알고리즘] 소수 나열하기/ 소수 찾기 (0) | 2021.06.12 |
[알고리즘] 문자열에서 알파벳 중에 가장 많이 나온 알파벳 찾기/ 최빈값 찾기 python (0) | 2021.06.12 |
[알고리즘] 최댓값 찾기 python (0) | 2021.06.12 |