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
- 항해99
- Grafana
- aop
- GIT
- css
- 프로그래머스
- 코딩테스트 준비
- ArrayList
- 자료구조
- wil
- CS
- 개발자 취업
- 이진 탐색(binary search)
- 코딩문제
- cs 공부)준비
- 메서드
- github
- Til
- 자바
- 코딩공부
- Java
- 면접(java
- 99클럽
- Entity
- 회고
- 배열
- HTML
- 정렬 알고리즘(sort algorithm)
- Spring
- 코딩
Archives
- Today
- Total
hayu's 개발 일지
99클럽 코테 스터디 33일차 TIL + Big-O 표기법(1) 본문
학습 키워드
- Big-O 표기법
공부한 내용
시간복잡도**(Time Complexity)**
- 알고리즘이 실행될 때 필요한 ‘입력값’과 ‘연산 수행 시간’에 따라 효율적인 알고리즘을 나타내는 척도를 의미한다.
- 즉, 입력 값이 커질수록 알고리즘의 수행 시간이 어떻게 증가하는디에 따른 지표를 의미한다.
- 시간 복잡도는 ‘빅오 표기법(Big-O notation)’를 통해 표현하며, ‘수치가 작을수록 효율적인 알고리즘’을 의미한다.
공간 복잡도(Space Complexity)
- 알고리즘이 실행될 때 필요한 ‘메모리의 공간의 양’을 의미한다.
- 즉, 알고리즘의 효율성을 판단하는 데 사용되며 일반적으로 메모리 사용량이 적을수록 더 효율적인 알고리즘이라고 할 수 있다.
- 공간 복잡도는 일반적으로 알고리즘의 시간 복잡도와 함께 고려되며 알고리즘이 실행되는 환경에 따라 달라질 수 있다. 예를 들어, 일부 알고리즘은 실행될 때 추가적인 메모리를 필요로 하지 않지만 다른 알고리즘은 입력 데이터의 양에 따라 필요한 메모리 공간이 증가할 수 있다.
- 따라서 알고리즘을 설계할때에는 시간 복잡도와 공간 복잡도를 함께 고려해야다.
Big-O 표기법
- 알고리즘의 입력 크기에 대해 수행 시간이 어떤 방식으로 증가하는지를 표기하는 것으로 최악의 경우의 시간 복잡도를 의미한다.
- 빅오 표기법을 통해 성능을 개선하거나 적절한 알고리즘을 선택할 수 있다.
최악의 경우의 시간 복잡도란?
- 알고리즘이 입력 크기에 따라 가장 오래 걸리는 경우를 의미한다.
- 이를 분석함으로써 알고리즘을 설계할 때 최악의 성능을 예측하고 최악의 경우에도 어느 정도의 실행 속도를 보장함을 확인한다.
점근적 분석
- 시간 복잡도를 고려하기 위해서, 입력값의 변화에 따라서 실행되는 연산의 횟수와 시간을 비교한다.
- 데이터 입력값이 작은 문제
- 알고리즘의 효율성이 중요하지 않고, 비효율적이어도 무방하다.
- 데이터 입력값이 충분히 큰 문제
- 알고리즘의 효율성이 중요하고, 비효율적인 알고리즘은 치명적이다.
- 즉 입력값이 커짐에 따라서, 소요되는 시간을 최소화하는 것이 목적이다.
이러한 입력의 크기가 충분히 큰 경우에 대한 분석을 점근적 분석이라고 한다.
ex) 함수의 극한
어떠한 문제 해결을 위한 알고리즘의 성능분석을 할 때, 다양한 요소에 의해 비교 결과가 항상 일정하지 않을 수 있다. 이를 효과적으로 해결하는 방법이 점근적 분석이며, 이는 주어진 데이터의 크기를 기준으로 수행시간 혹은 사용공간이 얼마나 되는지를 객관적으로 비교할 수 있는 기준을 제시해준다.
점근적 표기법
Asymptotic Notation
점근적 표기법은 시간복잡도를 나타내는데 사용된다.
최상의 경우 : Big-Ω Notation (빅-오메가)
◼ 최상을 고려하는 Ω( g(n) ) : 하한 점근
적어도 g(n)의 비율로 증가하는 함수
f(n) = Ω(g(n))으로 보는 직관적 의미 :
f는 g보다 느리게 증가하지 않는다.
: 최선의 시나리오로 최소 이정도 시간이 걸린다.
Notation (스몰오메가)
◼ ω( g(n) ) : 여유 있는 하한 점근, o( g(n) )과 정확히 대조됨
f(n) = ω(g(n))으로 보는 직관적 의미 :
f는 g보다 빠르게 증가한다.
: 주어진 알고리즘이 아무리 좋아도 비교하는 함수보다 좋지 못하다.
평균의 경우 : Big-θ Notation (빅-세타)
◼ 중간, 평균 정도의 θ( g(n) ) : 점근선 상한선과 점근적 하한선의 교집합
g(n)의 비율로 증가하는 함수
f(n) = θ(g(n))으로 보는 직관적 의미 :
f는 g와 같은 정도로 증가한다.
: 주어진 알고리즘이 아무리 좋아지거나 나빠지더라도 비교하는 함수의 범위 안에 있다.
o Notation (스몰오)
◼ O( g(n) ) : 여유있는 상한 점근
f(n) = o(g(n))으로 보는 직관적 의미 :
f는 g보다 느리게 증가한다.
: 주어진 알고리즘이 아무리 나빠도 비교하는 함수보다 좋다.
최악의 경우 : Big-O Notation (빅-오)
◼ 최악의 경우 O( g(n) ) : 상한 점근
기껏해야! g(n)의 비율로 증가하는 함수
f(n) = O(g(n))으로 보는 직관적 의미 :
f는 g보다 빠르게 증가하지 않는다.
(상수 비율의 차이는 무시)
: 주어진 알고리즘이 아무리 나빠도 비교하는 함수와 같거나 좋다.
참고 자료
'자료구조&알고리즘' 카테고리의 다른 글
99클럽 코테 스터디 36일차 TIL + 이진 탐색(Binary Search)(1) (0) | 2024.06.25 |
---|---|
99클럽 코테 스터디 34일차 TIL + Big-O 표기법(2) (1) | 2024.06.23 |
99클럽 코테 스터디 32일차 TIL + 우선순위 큐(PriorityQueue)(2) (0) | 2024.06.21 |
99클럽 코테 스터디 31일차 TIL + 우선순위 큐(PriorityQueue)(1) (0) | 2024.06.20 |
99클럽 코테 스터디 30일차 TIL + Graph(2) (1) | 2024.06.19 |