24.04.26 TIL
우선순위 연산자 유형 기호
21 | 그룹(괄호) | (...) |
... | ||
17 | 논리 NOT | ! ... |
17 | typeof | typeof ... |
16 | 거듭제곱 | ... ** ... |
15 | 곱셈 | ... * ... |
15 | 나눗셈 | ... / ... |
15 | 나머지 | ... % ... |
14 | 덧셈 | ... + ... |
14 | 뺄셈 | ... - ... |
... | ||
12 | 미만 | ... < ... |
12 | 이하 | ... <= ... |
12 | 초과 | ... > ... |
12 | 이상 | ... >= ... |
11 | 동등 | ... == ... |
11 | 부등 | ... != ... |
11 | 일치 | ... === ... |
11 | 불일치 | ... !== ... |
... | ||
6 | 논리 AND | ... && ... |
5 | 논리 OR | ... II ... |
... | ||
3 | 할당 | ... = ... |
[스파르타코딩클럽
알고리즘 강의 - 3일차
∙ 시간 복잡도
프로그램의 수행 성능을 최악의 경우를 가정하여 정량화하는 방법
시간 복잡도를 알지 못하면 내가 알고리즘을 고안해도 이 방법이 정말로 유용한지 판단하기 힘들어요!
∙ 공간 복잡도는 시간 복잡도에 비해서 크게 중요하지는 않지만, 공간도 최적화하면 당연히 좋습니다. 하지만 최적화가 덜 되어있다고 해도 당장은 프로그램을 돌리는 컴퓨팅 리소스의 성능을 올리면 해결이 되어서 시간 복잡도에 비해서는 중요도가 높지 않아요 → 물론 나중엔 코드로 최적화를 해서 비용을 절감해야 좋은 개발자겠죠?
∙ 알고리즘에서 자주 쓰이는 자료구조들에 대해서 알아볼것 : 배열, 링크드리스트
▶︎ 시간 복잡도
정의
∙ 시간 복잡도는 문제를 해결하는데 걸리는 시간과 입력의 함수 관계를 가리킨다. 컴퓨터과학에서 알고리즘의 시간복잡도는 입력을 나타내는 문자열 길이의 함수로서 작동하는 알고리즘을 취해 시간을 정량화하는 것
▶︎ 공간 복잡도
∙ 시간 복잡도와는 다르게 공간 복잡도는 문제를 해결하는데에 대한 공간과의 상관관계
∙ N개의 입력이 주어지면 공간을 얼마나 쓰는지 나타내는 것
▸ 배열
배열에서 할 수 있는 대표적인 기능
∙ 조회
- O(1)의 조회시간을 가진다는 매우 큰 장점이 있어요!
- 여기서 O(1)이란 무조건 한 번에 상수적으로 값을 조회를 할 수 있다는 얘기에요!
왜냐하면 인덱스 값을 받으면 해당하는 배열의 값을 바로 리턴하니까요!
∙ 삽입 & 삭제
- 배열 끝에서 추가 및 삭제는 O(1)이에요!
- 배열 끝이 아닌 다른 곳에서 원소를 삽입 혹은 삭제 할 경우에는 O(n)이에요!
∙ 정렬
정렬의 경우엔 어떤 정렬 알고리즘을 사용하느냐에 따라 시간 복잡도가 다 다르게 나와요!
∙ 검색
- 일반적으로는 O(N)이에요! 첫 원소부터 끝 원소까지 다 보니까요!
- 하지만, 정렬이 되어있는 배열이면 O(log N)이 가능해요! 이것은 나중에 배우게 되실거에요!
▸ 링크드리스트 (유동적으로 연결고리를 떼었다가 붙였다가 할 수 있는 자료구조)
알고리즘 코드카타