[자료구조] ep1) 자료구조 기본 지식들
ㅇ다차원 배열- 3차원 배열 - 4차원 배열 ㅇ빅오(Big O) 표기법: 연산의 횟수를 대략적(점근적)으로 표기"최악의 case 실행시간을 고려한다" [예시](1) 7n-2: O(n)(2) 3n^3 + 20n^2 + 5: O(n^3)(3) 3log(n) + log
claremont.tistory.com
일반적으로 연산을 1억(10^8) 번 하면 1초다
📌 어떻게 나온 계산인가?
- CPU의 클럭 속도
- 현대적인 CPU는 보통 3GHz ~ 4GHz 정도의 클럭 속도를 갖는다
- 1GHz = 10⁹ 클럭/초, 따라서 3GHz = 3 × 10⁹ 클럭/초
- 클럭당 연산 수
- 보통 CPU는 한 클럭 사이클당 1개의 연산을 처리할 수 있다
※ 그러나 연산 종류에 따라 다르다
- 덧셈, 뺄셈: 1클럭
- 곱셈: 1~3클럭
- 나눗셈: 3~10클럭
- 메모리 접근: 2~5클럭 (캐시 여부에 따라)
(계산 예시)
- 3GHz CPU는 3 × 10⁹ 연산/초가 가능하다
- 그러나 실제 프로그램에서는 메모리 접근, 분기문(조건문), 함수 호출 등이 있어 CPU 성능을 100% 활용하지 못한다
- 경험적으로 30% 정도의 성능만 활용된다고 가정:
- 3 × 10^9 × 0.3 = 9 × 10^8 연산/초
- 이를 여유 있게 1억 번(10⁸)으로 잡은 것이 이 법칙의 시작이다!
따라서 "1억(10^8)번의 연산 = 1초"
이 원리를 이용해 입력 제한값으로 알고리즘을 유추할 수가 있다
[입력 제한값에 따라 가능한 최대 시간 빅-오]
1. n <= 20 : 빡구현, 브루트 포스(완전 탐색), 백트래킹(완전 탐색에서 가지치기)
웬만한 저질 구현도 통과
O(n^n), O(n!), O(2^n)
2. n <= 100 : 플로이드-와샬 알고리즘
적당한 삼중루프
O(n^3)
3. n <= 1000 : 벨만-포드 알고리즘
적당한 이중루프
O(n^2)
4. n <= 10000 : DP, 이진 탐색, 다익스트라 알고리즘, 유니온 파인드, 세그먼트 트리, 투 포인터
선형 (머리 좀 써야한다)
O(n), O(n logn)
5. n <= 10^8 : 유클리드 호제법
적당한 수학적 기믹 필요
O(log n)
참고 및 출처: 저세상개발자 유튜브
https://www.youtube.com/watch?v=PFKPdjdWbQ8
'problem solving > ps 팁' 카테고리의 다른 글
[ps 팁] 재귀는 마치 누군가가 종이에 숫자를 쓰고, 그 종이를 다음 사람에게 넘겨주는 방식과 같다 (0) | 2025.03.25 |
---|---|
[ps 팁] 그래프 순회는 무조건 인접 리스트로 구현하는 게 유리할까? (0) | 2025.03.24 |
[ps 팁] 이진 탐색 트리(BST) 순회에 관한 놀라운 사실 (0) | 2024.10.27 |
코딩테스트 빈출 유형 정리 (0) | 2024.08.04 |