목록Computer Science (41)
DNF LOVE
프로그래밍 언어를 처음 공부하게 된다면 해당 언어의 특징부터 알게 된다. C는 절차 지향 프로그래밍이라 하고 이를 발전시킨 C++, JAVA, C#은 객체 지향 프로그래밍이라 한다. 그렇다면 객체 지향 프로그래밍이란 무엇일까? 객체 프로그래밍의 정의와 특징에 대해 알아보도록 하자. 객체 지향, 절차 지향으로 나뉘는 것은 프로그래밍 패러다임의 일종이다. 프로그램 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주고 결정하는 역할을 한다. 명령형, 절차형, 객체형, 함수형 등등 다양한 패러다임이 존재한다. 즉, 절차냐 객체냐 하는 것은 결국 프로그래밍 방법론의 일종이라는 것이다. 그래서 C++이나 JAVA모두 절차 지향, 객체 지향 프로그래밍 기법을 수행할 수 있다. 그렇다면 각 패러다임의 정의는 무엇일..
컴퓨터 Process가 실행될 때 가장 중요한 부분은 어디일까? 어쩌면 당연한 이야기겠지만 Memory와 CPU이다. 우리는 프로그래밍 언어를 배우면서 정적변수, 지역변수 등을 나뉘며 이 둘은 다른 메모리 영역에 적재된다는 것을 스쳐가듯 배웠을 것이다. 그렇다면 각 데이터들은 어느 메모리에 적재되는 것일까? 이것은 어떤 OS 책을 읽나 기본적으로 보여주는 메모리 영역 그림이다. Code, Data, Stack영역은 컴파일러가 알아서 메모리 영역을 결정해준다. 그러나 반대로 Heap영역은 개발자에 의해 프로그램 동작 시(RunTIme) 메모리에 데이터가 적재되는 특징을 갖고 있다. 각 영역은 어떤 데이터를 담고 특징을 갖고있는지 알아보도록 하자. 1. Code 영역 : 코드(=Text) 영역은 간단하게 실..
그래프는 비선형 자료구조이기 때문에 배열처럼 단순한 반복으로 그래프를 조회하는 것은 비효율적이다. 그래프는 각 정점 간의 연결 관계를 사용해 조회하는 방법을 사용한다.(한 정점에서 연결된 다른 정점으로 이동하며 조회한다.) 깊이 우선 탐색(Depth First Search) 너비 우선 탐색(Breadth First Search) [깊이 우선 탐색 - DFS] 깊이 우선 탐색이란? 하나의 경로로부터 도달할 수 있는 모든 노드를 방문한 이후 다른 경로를 조회하는 방법이다. 한 노드로부터 발생하는 모든 경로를 탐색할 때까지 해당 노드 정보는 유지한다. 모든 경우의 수를 검사하거나, 규칙이 복잡한 경로를 탐색할 때 유리하다. 현재 정점에서 갈 수 있는 점들 중 한 곳을 우선적으로 끝까지 탐색한다. 한 번에 하나..