본문 바로가기

CS/Algorithm90

[개발TIP] static 변수를 지양해야하는 이유 http://tech.thegajago.com/2016/02/20/%EC%99%9C-%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-static%EC%9D%98-%EC%82%AC%EC%9A%A9%EC%9D%84-%EC%A7%80%EC%96%91%ED%95%B4%EC%95%BC-%ED%95%98%EB%8A%94%EA%B0%80/ 2018. 3. 30.
[알고리즘] 시간복잡도 (Time Complexity) [알고리즘] 시간복잡도 (Time Complexity) 시간 복잡도란?- Input 에서 Output이 될 때 까지 걸리는 시간- 알고리즘을 구성한 명령어가 실행된 횟수 (frequency of calling command)- 알고리즘 배울 때의 핵심은 공간, 시간 을 이용하는 것. 이 때, 공간과 시간은 거의 항상 반비례하다.- 즉, 어떤 알고리즘이 얼마나 걸리느냐? 이다. (CPU 사용량) [ cf ] 공간 복잡도 = 메모리를 얼마나 사용하는지에 대한 용량 개념 어떤 알고리즘이 메모리를 얼마나 쓰느냐? (RAM 사용량) 공간이냐? 시간이냐? 면 요즘은 시간이 우선이다. 시간 복잡도를 고려하는 것은 최적화를 위해 필요하다.(다만, 데이터를 저장할 수 있는 메모리와 저장매체의 발전 덕에 과거보다는 덜 필.. 2018. 3. 30.
[알고리즘][BFS] BFS 기본 개념 [알고리즘][BFS] BFS 기본 개념 BFS (Breadth First Search) ; 너비 우선 탐색- 큐를 이용해서 지금 위치에서 갈 수 있는 것을 모두 큐에 넣는 방식- 큐에 넣을 때 방문 check 해준다. 탐색 방법 코드 구현* BFS의 구현은 Queue를 이용 - 인접행렬을 이용한 코드 구현1234567891011121314151617181920 int n = scan.nextInt(); //접점의 수 int m = scan.nextInt(); //간선의 수 int[][] array = new int[n][m]; boolean[] check = new boolean[n]; Queue queue = new LinkedList(); // 큐 public void BFS1() { check[1].. 2018. 3. 27.
[알고리즘][DFS] DFS 기본 개념 [알고리즘][DFS] DFS 개념 그래프 탐색의 종류DFS (DepthFirstSearch) ; 스택BFS (BreadthFirstSearch) ; 큐 그래프 탐색의 목적 - 모든 정점을 1번씩 방문 깊이우선탐색 (DFS)스택을 이용해 갈 수 있는 만큼 최대한 많이 간다.갈 수 없을 경우, 스택에서 빼고 이전으로 돌아간다. [코드]재귀를 이용한 DFS 탐색 코드- 인접 행렬을 이용한 코드 구현123456789101112131415 int n = scan.nextInt(); //접점의 수 int m = scan.nextInt(); //간선의 수 int[][] array = new int[n][m]; boolean[] check = new boolean[n]; public void DFS1(int x) { .. 2018. 3. 26.