알고리즘 office hour _ 최민철님
문제를 해결 하는 법 먼저!
- 문제를 순서대로 풀 수 있어야 함
- 문제의 시작과 끝을 알아야 한다
- 문제의 크기를 알아야 한다
-> 대부분의 경우 입력의 크기 (시간,공간 복잡도 고려 -> 상대적으로 오늘 날의 코딩환경에서 공간복잡도의 중요성은 낮아짐
-> 왜? ex, JS의 데이터 하나의 크기 8바이트 -> 자료100만개, 800만바이트=80MB | 128,256,512MB 메모리 주어진다고 생각해보면.)
띵모먼: Q.시간복잡도 O(N²)
로 예상되는 해결법이 있다면 코드로 시도하기 전에 무조건 다른 방법을 생각해야 할까??
나: 네! -> 정확히는, 주어지는 입력의 크기, 조건에 따라 답은 No일수 도 있다, (극단적? 예: O(N³) 이 최적의 경우일 문제도 있다,입력은 작겠지..) => 시간복잡도 O(logN) < O(N) 항상이 아님, 입력에 따라 갈 수록 격차가 난다는 포인트!
프로그래밍 언어가 없이도 풀 수 있어야 한다
문제를 최대한 작은 단위로 쪼개는 연습 divide & conquer
재귀(필), 순열, 조합, 최대공약수, 최대공배수, dfs/bfs,
완전 탐색 충분히 -> DP(memoization, tabulation)