분류 전체보기(137)
-
8 . 그래프 이론
1. 그래프 관련해서 이미 배운 내용 정리 - 그래프랑 노드와 노드 사이에 연결된 간선의 정보를 가지고 있는 자료구조를 의미한다. - 그래프와 트리 비교 그래프 트리 방향성 방향 그래프 혹은 무방향 그래프 방향 그래프 순환성 순환 및 비순환 비순환 루트 노드 존재 여부 루트 노드가 없음 루트 노드가 존재 노드간 관계성 부모와 자식 관계 없음 부모와 자식 관계 모델의 종류 네트워크 모델 계층 모델 - 그래프의 구현 방법 : 노드의 개수가 V, 간선의 개수가 E인 그래프일 때 인접 행렬 인접 리스트 방식 2차원 배열을 사용하는 방식 리스트를 사용하는 방식 메모리 공간 O(V^2) O(E) 특정 노드에서 다른 노드로 이어진 간선의 비용을 알기 위한 시간 복잡도 O(1) O(V) 2. 서로소 집합 - 서로소 집..
2021.09.08 -
해당 카테고리에 속한 모든 글 비공개 조치 관련 안내
해당 카테고리(운영체제, 컴퓨터구조, 네트워크프로그래밍)에 속한 모든 글들은 제가 학교 공부를 할 때 혼자 보려고 정리를 했던 내용들입니다. 따라서 내용도 중구난방이고, 강의 ppt에 있는 이미지를 사용한 부분 등 수정해야 할 부분들도 있어서 일단 비공개조치를 하였습니다. (강의 ppt에 있는 이미지가 책에 있는 이미지와 동일한 경우들이 있어서..... 혹시나 저작권 문제가 생길 가능성이 있을 것 같아서.....) 조만간 복습을 할 때, 제대로 정리해서 올릴 예정입니다.
2021.09.07 -
7. 최단 경로 (다익스트라, 플로이드 워셜 알고리즘)
1. 다익스트라 최단 경로 알고리즘 - 다익스트라 (Dijkstra) 최단 경로 알고리즘은 그래프에서 여러 개의 노드가 있을 떄, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘이다. => '음의 간선'이 없을 때 정상적으로 동작한다. => 따라서, 실제로 GPS 소프트웨어의 기본 알고리즘으로 채택되곤 한다. - 다익스트라 알고리즘은 일반적으로 그리디 알고리즘으로 분류된다. => 매번 '가장 비용이 적은 노드'를 선택해서 임의의 과정을 반복하기 때문이다. (1) 다익스트라 알고리즘의 간략한 원리 출발 노드를 설정한다. 최단 거리 테이블을 초기화한다. (모든 값을 무한으로 초기화한다) 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다. 해당 노드를 거쳐 다른..
2021.09.07 -
[자바 객체 지향] 스프링이 사랑한 디자인 패턴 2
1. 템플릿 메서드 패턴 (Template Method Pattern) public abstract class Animal { //템플릿 메서드 public void playWithOwner(){ System.out.println("귀염둥이 이리온..."); play(); runSomething(); System.out.println("잘했어"); } //추상 메서드 abstract void play(); // Hook(갈고리) 메서드 void runSomething(){ System.out.println("꼬리 살랑 살랑~"); } } - 상위 클래스인 Animal에는 템플릿을 제공하는 playWithOwner() 메서드와 하위 클래스에게 구현을 강제하는 play() 추상 메서드, 하위 클래스가 선택적..
2021.09.06 -
[Java Script] 스코프 체인
- 자바스크립트도 다른 언어와 마찬가지로 스코프, 즉 유효 범위가 있다. - 자바스크립트에서는 오직 함수만이 유효 범위의 한 단위가 된다. - 스코프 체인 : 유효 범위를 나타내는 스코프가 [[scope]] 프로퍼티로 각 함수 객체 내에서 연결 리스트 형식으로 관리되는 것 - 각각의 함수는 [[scope]] 프로퍼티로 자신이 생성된 실행 컨텍스트의 스코프 체인을 참조한다. => 함수가 실행되는 순간 실행 컨텍스트가 만들어지고, 이 실행 컨텍스트는 실행된 함수의 [[scope]] 프로퍼티를 기반으로 새로운 스코프 체인을 만든다. 1. 전역 실행 컨텍스트의 스코프 체인 var var1 = 1; var var2 = 2; console.log(var1); //1 console.log(var2); //2 - 위의..
2021.09.06 -
6. 다이나믹 프로그래밍
1. 다이나믹 프로그래밍을 사용할 수 있는 경우 : 다음 조건을 만족할 때 사용할 수 있다 큰 문제를 작은 문제로 나눌 수 있다. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다 2. 메모이제이션 (Memoization) 기법 - 다이나믹 프로그래밍을 구현하는 방법 중 한 종류이다. - 한 번 구한 결과를 메모리 공간에 메모해두고 같은 식을 다시 호출하면 메모한 결과를 그대로 가져오는 기법 - 캐싱(Caching)이라고도 한다. - 메모이제이션으로 구현한 피보나치 수열 d = [0] * 100 def fibo(x): if x== 1 or x == 2: return 1 if d[x] != 0 : return d[x] d[x] = fibo(x-1) + fibo(x-2) return d[x]..
2021.09.01