반응형

분류 전체보기 2934

[C언어 알고리즘] 1. 2 알고리즘의 평가와 접근적 표기

[C언어 알고리즘] 1. 2 알고리즘의 평가와 접근적 표기같은 문제를 해결하는 알고리즘은 여러 개가 있을 수 있죠. 전산에서 알고리즘을 평가하는 방법은 여러가지가 있어요. 그 중에서 수행 속도를 평가하거나 메모리 효율을 평가하는 점근식 방법을 많이 사용하죠. 점근적 표기에서는 n개의 자료가 있을 때 알고리즘 수행 시간(혹은 메모리 사용)이 n과 어떠한 상관관계가 있는지 표현하는 방법입니다. 예를 들어 어떠한 알고리즘이 n개의 자료가 있을 때 수행 시간 T(n)= 3n+27이라고 가정할게요. 만약 n이 충분히 큰 수라면 가장 높은 차수의 항이 결과에 가장 큰 영향을 주겠죠. 점근식 표기에서는 가장 높은 차수의 항을 제외한 나머지 차수의 항은 버리고 계산해요. 그리고 상수도 생략하여 평가합니다. 따라서 T(..

[C언어 알고리즘] 1.1 알고리즘(Algorithm)

[C언어 알고리즘] 1.1 알고리즘(Algorithm) 알고리즘은 특정 문제를 해결하기 위한 논리를 말해요. 해결해야 할 어떠한 문제가 주어지면 문제에 주어지는 선행 조건과 영향 인자와 후행 조건을 알아겠죠. 선행 조건은 알고리즘을 수행 하기 전의 상태를 말합니다. 그리고 영향 인자는 문제를 해결하는데 영향을 주는 인자예요. 후행 조건은 문제를 해결하고 난 후의 상태를 말해요. 결국 알고리즘은 선행 조건인 상태에서 주어진 영향 인자를 가지고 후행 조건에 맞게 문제를 해결하는 것이죠. 예를 들어 특정 범위 내의 정수의 합계를 구하는 문제를 살펴봅시다. 이 때는 선행 조건은 특별한 것이 없네요. 문제를 해결하는 데 영향을 주는 인자는 범위의 시작과 끝이겠죠. 따라서 알고리즘을 함수로 구현한다면 입력 인자로 ..

[C언어 알고리즘] 1. 다루는 내용

[C언어 알고리즘] 1. 다루는 내용출간일 2016년 11월 30일판매가 3000원형태 ebook학습에 도움이 되시면 ebook을 구입하여 소장하시면 감사하겠습니다.언제나 휴일 출판사의 수익금의 대부분은 아프리카에 기부하고 있습니다. 이 책은 프로그래머의 기초 지식인 알고리즘을 이론적인 접근과 구현을 다루고 있습니다. 알고리즘은 문제를 해결하기 위한 논리의 집합이예요. 문제 해결 방법으로 분류하면 반복 알고리즘, 재귀 알고리즘, 분할 정복, 동적 프로그래밍, 탐욕 알고리즘 등이 있죠. 컴퓨터 프로그래밍을 업무로 하는 이들에게 알고리즘은 실질적인 구현에서 필수적으로 필요합니다. 그리고 이들을 다루는 책은 매우 다양하죠. 이론으로 접근하는 책들은 다양한 알고리즘을 다루지만 실질적인 구현없이 추상적으로 소개할..

[C언어 자료구조] 8.4 그래프 소스 코드

8.4 그래프 소스 코드//common.h #pragma once //헤더 파일을 한 번만 포함해서 컴파일 #include #include #include #include #include #include #include #pragma warning(disable:4996) //4996컴파일 경고 메시지 출력 해제 //Array.h #pragma once typedef void * Element; typedef struct _Array Array; struct _Array { Element *base; int capacity; int usage; }; typedef Element *Iterator; Array *New_Array(); void Delete_Array(Array *arr); void Arra..

[C언어 자료구조] 8.3 그래프 테스트

8.3 그래프 테스트 이제 작성한 그래프가 잘 동작하는지 테스트 코드를 작성합시다.[그림 8.1] 그래프 논리적 도식 int main() { 먼저 그래프를 동적으로 생성합니다. Graph *graph = New_Graph(); 정점을 그래프에 추가합시다. Graph_AddVertex(graph,"A"); Graph_AddVertex(graph,"B"); Graph_AddVertex(graph,"C"); Graph_AddVertex(graph,"D"); Graph_AddVertex(graph,"E"); Graph_AddVertex(graph,"F"); Graph_AddVertex(graph,"G"); Graph_AddVertex(graph,"H"); 간선을 그래프에 추가합시다. Graph_AddEdge(g..

[C언어 자료구조] 8.2 그래프 구현

8.2 그래프 구현 동적으로 그래프를 생성하는 함수를 구현합시다. Graph *New_Graph() { Graph *graph = 0; 그래프 형식 크기의 메모리를 할당합니다. graph = (Graph *)malloc(sizeof(Graph)); 정점을 보관할 동적 배열과 간선을 보관할 동적 배열을 생성한 후에 그래프를 반환합니다. graph->vertexs = New_Array(); graph->edges = New_Array(); return graph; } 동적으로 생성한 그래프를 소멸하는 함수를 구현합시다. void Delete_Graph(Graph *graph) { 그래프 내부에서는 간선을 동적으로 생성하므로 그래프를 소멸하는 과정에서 간선들도 소멸해야 합니다. 따라서 간선을 순차적으로 접근하..

[C언어 자료구조] 8.1 그래프 설계

8.1 그래프 설계 정점은 문자열 리터럴 상수로 표현하기로 할게요. 사용하기 쉽게 const char * 형식을 Vertex이름으로 타입 재지정할게요. typedef const char * Vertex; 그리고 간선은 간선의 끝에 있는 두 개의 정점과 무게(거리)를 멤버로 정의할게요. typedef struct _Edge Edge; struct _Edge { Vertex ep1; Vertex ep2; int weight; }; 그래프는 정점을 보관하는 컬렉션과 간선을 보관하는 컬렉션으로 구성할게요. 여기에서는 동적 배열을 사용합시다. typedef struct _Graph Graph; struct _Graph { Array *vertexs; Array *edges; }; 동적으로 그래프를 생성하는 함수와..

[C언어 자료구조] 8. 정점과 간선 집합으로 표현한 그래프

8. 정점과 간선 집합으로 표현한 그래프 그래프를 표현하는 방법은 다양합니다. 이차원 배열을 이용해서 인접 행렬로 표현하는 방법도 있고 정점과 간선의 집합으로 표현하는 방법도 있습니다. 이차원 배열을 이용해서 인접 행렬로 표현하는 방법은 정점의 개수가 n일 때 행과 열이 n인 이차원 배열을 만들고 두 개의 정점 사이의 거리를 배열의 항목 값으로 설정하는 형태로 작성합니다. 이 방법은 다른 책과 인터넷 검색 등을 통해 어렵지 않게 찾아볼 수 있을 것입니다. 하지만 그래프의 정점의 개수가 많으면 실제 정점과 정점 사이에 존재하지 않는 간선을 위한 부분이 전체의 많은 부분을 차지하여 메모리 효율과 수행 속도가 나빠질 수 있습니다. 이 책에서는 정점과 간선의 집합을 이용하여 그래프를 나타내는 방법을 사용할게요...

[영문법] 현재완료, 과거완료

현재 완료, 과거완료현재완료과거부터 현재까지 이어지는 상태나 동작을 표현할 때 사용합니다."have/has + 과거분사" 형태로 표현합니다. He has been in the hospital. (그는 입원 중입니다.)It has been a long time. (그것은 오래 전의 일이죠.)I has lived in Seoul for seven years. (서울에 7년째 살고 있어요.)She has played the piano since she was five. (그녀는 다섯살 때부터 피아노를 연주했어요.) 과거 시제는 과거의 일이나 상태로 현재는 그렇지 않다는 의미를 내포하고 있습니다.He was in the hospital.(그는 병원에 있었어요. - 과거시제이므로 현재는 병원에 있지 않다는 의미를..

[고구려 11대 왕] 지나친 자만으로 충신(득래, 밀우, 유유)들을 잃은 동천왕

지나친 자만으로 충신(득래, 밀우, 유유)들을 잃은 동천왕 고구려의 11대 왕은 동천왕(227~248)입니다. 형사취수(형을 죽은 뒤에 동생이 형수와 결혼)한 산상왕은 왕후 우씨와 자식을 얻지 못했다고 합니다. 이에 주통촌 출신의 용녀로부터 얻은 자식이 동천왕입니다. 동천왕이 왕위에 올랐을 때는 오나라와 우호관계를 유지하였고 충신들과 평안한 나라를 만드는데 힘을 쏟았다고 하네요. 하지만 234년에 위와 화친하면서부터 정세는 180도 바뀌기 시작합니다. 238년 위가 요동의 공손연을 토벌할 때 군사 천여명을 보내 위를 도았지만 이는 두 나라의 국경이 맞닿는 것을 의미하였습니다. 30대의 젊은 기상으로 위나라와 싸워 서안평을 함락하였고 이 기세를 몰아 계속 전쟁 준비를 하였습니다. 하지만 대장이었던 득래는 ..

교육/국사 2016.11.28
반응형