오늘 한 일
오늘은 알고리즘에 대하여 배웠다.
왜 하는지는 정말 이해가 잘 갔다. 단지 문제를 푸는게 어려웠을 뿐. 소수를 찾는 알고리즘 문제는 정말 머리가 깨지는 줄 알았다.
시간 복잡도와 공간 복잡도에 대하여 배웠다.
- 시간 복잡도: 입력값과 문제를 해결하는 데 걸리는 시간과의 상관관계
- 공간 복잡도: 입력값과 문제를 해결하는 데 걸리는 공간과의 상관관계
점근 표기법의 종류:
- 빅오(Big-O)표기법
최악의 성능이 나올 때 어느 정도의 연산량이 걸릴것인지 표기
- 빅 오메가(Big-Ω) 표기법
최선의 성능이 나올 때 어느 정도의 연산량이 걸릴것인지 표기
하지만 알고리즘에서는 거의 모든 알고리즘을 빅오 표기법으로 분석한다고 한다.
이유는 입력값이 최선의 경우일 가능성은 굉장히 적을 뿐더러,
우리는 항상 최악의 경우를 대비해야 하기 때문이다.ㅋ
- 입력값에 비례해서 얼마나 늘어날지 파악해보자. 1 ? N ? N2 (하나의 반복문 = N)
- 공간복잡도 보다는 시간 복잡도를 더 줄이기 위해 고민하자. 왜냐면 공간복잡도는 거의 상수이기 때문이다. 상수는 잘 고려 안해도 된다.
- 최악의 경우에 시간이 얼마나 소요될지(빅오 표기법)에 대해 고민하자
array와 linkedlist에 대하여


class에 대하여

- 클래스를 이용하면 유사한 행동 혹은 유사한 데이터를 쌓을 수 있게 구조를 쉽게 만들 수 있다.
- 연관성이 있는 데이터들을 클래스 내에서 관리하면서 다양한 객체를 쉽게 생성하기 위해서는 클래스라는 개념을 잘 활용해야 한다.