-
2017.06.18
[C] 정렬(Sorting)
정렬(Sorting) - 정렬(sorting) : 물건을 크기순으로 오름차순(ascending order)이나 내림차순(descending order)으로 나열하는 것. - 정렬은 컴퓨터공학을 포함한 모든 과학 기술 분야에서 가장 기본적이고 중요한 알고리즘 중의 하나로 일상생활에서 많이 사용됨. - 정렬은 자료 탐색에 있어서 필수적임. - 일반적으로 정렬시켜야 될 대상은 레코드(record)라고 불림. - 레코드는 다시 필드(field)라고 하는, 더 작은 단위로 나누어짐. - 여러 필드 중에서 특별히 레코드와 레코드를 식별해주는 역할을 하는 필드를 키(key)라고 함. 레코드 { [필드][필드][필드][필드][필드][필드][필드][필드][필드][필드] 레코드 { [필드][필드][필드][필드][필드][필..
-
2017.06.17
[C] 우선순위 큐(Priority Queue)
우선순위 큐(Priority Queue) - 컴퓨터에 우선순위의 개념이 필요할 때가 있음. 예) 네트워크 패킷 중에서 네트워크 관리와 관련된 패킷은 다른 일반 패킷보다 우선순위를 가짐. 예) 운영 시스템에서도 시스템 프로세스는 응용 프로세스보다 우선순위를 가지게 됨. - 따라서 자료 구조에서도 이러한 우선순위를 지원하는 것이 필요함. - 우선순위 큐(priority queue) : 우선순위의 개념을 큐에 도입한 자료 구조. - 보통의 큐는 선입 선출(FIFO)의 원칙에 의하여 먼저 들어온 데이터가 먼저 나가게 되지만, 우선순위 큐에서는 데이터들이 우선순위를 가지고 있고 우선순위가 높은 데이터가 먼저 나가게 됨. - 스택에 들어 있는 데이터들은 우선순위가 없음. 단지 먼저 들어간 데이터가 가장 늦게 나옴...
-
2017.06.11
Comparison among FUNCALL and APPLY and REDUCE
;; Comparison CG-USER(38): (funcall #'+ 1 2 3)6CG-USER(39): (apply #'+ '(1 2 3))6CG-USER(40): (reduce #'+ '(1 2 3))6 Comparison among FUNCALL and APPLY and REDUCE.Keep in mind that you should write only numbers when you use FUNCALL with #'(arithmetic operator).
-
2017.06.08
Block's World
;;;; Block's World;; ;;;; Global Variables;; (defstruct blocks (name nil) (color nil) (ison 'table) (isunder nil)) (defvar *blocks*) ;;;; Main;; (defun start-world () (setf *blocks* nil)) (defun new-block (name color) (push (make-blocks :name name :color color) *blocks*)) (defun get-block (name) (dolist (x *blocks* nil) (if (equal name (blocks-name x)) (return x)))) (defun clear-top? (name) (if ..
-
2017.06.06
Destructive Operations
;; Destructive Operations ;; CG-USER(28): (setf x nil);; NIL;; CG-USER(29): (nconc x y);; (D E F);; CG-USER(30): x;; NIL;; CG-USER(31): y;; (D E F);; CG-USER(32): (setf X (nconc X Y));; (D E F);; CG-USER(33): y;; (D E F);; CG-USER(34): x;; (D E F) ;; CG-USER(14): (setf x '(a b c));; (A B C);; CG-USER(15): (setf y '(d e f));; (D E F);; CG-USER(16): (setf z (append x y));; (A B C D E F);; CG-USER(..
-
2017.06.01
Readable Code
-
2017.06.01
[C] 트리(Tree)
트리(Tree) - 선형 자료 구조(linear data structure) : 자료들이 직선과 같이 나열되어 있는 구조 (리스트, 스택, 큐 등) - 트리는 계층적인 구조(hierarchical structure) 또는 비선형 자료 구조(nonlinear data structure)를 가지고 있으며, 계층적인 자료를 표현하는 데 이용되는 자료 구조. - 인공 지능 문제에서도 트리가 사용되는데 대표적인 것으로 결정 트리(decision tree)가 있음. - 결정 트리는 인간의 의사 결정 구조를 표현하는 한 가지 방법. [트리에서 쓰이는 용어] - 노드(node) : 트리의 구성 요소 - 트리는 한 개 이상의 노드로 이루어진 유한 집합임. - 이들 중 하나의 노드는 루트(root) 노드라고 불리고, 나머..
-
2017.05.31
원형 큐 (Circular Queue) 예
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106// 원형 큐 예 #include #include typedef int element;typedef struct { element *queue; int front, rear; int size;} QueueType; void init(QueueType *q) { q->front = q->rear = 0; q->size = 2; // 원형..
-
2017.05.31
중위 표기 수식을 전위 표기 수식으로 변환하는 프로그램
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 12..
-
2017.05.31
samesetp
(defun samesetp (lis1 lis2) (if (and (not (null lis1)) (not (null lis2))) (let ((x (first lis1)) (y (first lis2))) (cond ((and (listp x) (listp y)) (and (samesetp x y) (samesetp (rest lis1) (rest lis2)))) (t (and (eq x y) (samesetp (rest lis1) (rest lis2)))))) (= (length lis1) (length lis2)))) (defun samesetp (lis1 lis2) "Another Version of samesetp." (if (null lis1) (null lis2) (let ((x (remove..
-
2017.05.30
Tic Tac Toe Game
;; Defining global varaibles and constants (defconstant One 1) ;; human(defconstant TheOther 10) ;; computer (defvar *Opponent* One)(defvar *Computer* TheOther) (defvar *Triplets* '((1 2 3) (4 5 6) (7 8 9) ;; Horizontal Line (1 4 7) (2 5 8) (3 6 9) ;; Vertical Line (1 5 9) (3 5 7))) ;; Diagonal Line ;; Main ;; Initialization: Creating a board (defun makeBoard () (list 'Board 0 0 0 0 0 0 0 0 0)) ..
-
2017.05.30
배열 요소 정리
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #include using namespace std; int main() { const int num =5; int test[num]; cout
-
2017.05.30
인수와 레퍼런스
* 인수와 레퍼런스 - 포인터를 함수의 인수로 사용하면 호출자의 변수를 변경할 수 있음. - 하지만 포인터는 메모리 주소를 직접 다루기 때문에 어려움. - 레퍼런스(reference) : 변수등으로 초기화한 식별자. 형명 앞에 &를 붙여서 선언함. 형명& 레퍼런스명 = 변수; // 레퍼런스명에는 식별자를 사용함. int a; int& rA = a; // 레퍼런스 rA를 변수 a로 초기화함. -> 이 코드에서 'rA'가 레퍼런스. rA를 변수 a로 초기화한 것. - 예) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include using namespace std; int main() { int a = 5; int& rA = a; // 레퍼런스 rA를 변수 ..
-
2017.05.29
함수 템플릿 (Function Template)
* 함수 템플릿 (Function Template) - 함수 템플릿(Fundtion Template) : 다루는 형만 다른 함수를 틀을 통해 찍어내듯 만들어낼 때 필요한 틀. - 순서 1. 함수 템플릿을선언 및 정의 2. 함수 호출 (함수가 자동으로 만들어짐.) (1) 함수 템플릿 정의 template // 상황에 맞추어 변경시킬 형(type)의 이름을 지정함. 함수의 선언 혹은 정의 - 부분에는 템플릿 인수라는 것을 집어 넣음. - 템플릿 인수에는 T와 같은 임시 형(type) 이름을 넣음. - 함수 템플릿의 가인수형명은 템플릿 인수임. - 가인수의 구체적인 형(type) 이름 대신 T와 같은 임시 형(type) 이름을 사용함. - 함수 템플릿은 함수의 '틀'이 됨. 1 2 3 4 5 6 7 8 // ..
-
2017.05.25
함수 오버로드 (Function Overloading)
* 함수 오버로드 (Function Overloading) - 인수의 형과 개수가 다르면 같은 이름을 가진 함수를 여러 개 정의할 수 있음. - 예) int max(int x, int y) double max(double x, double y) - 이처럼 인수의 개수 및 형이 다르면서 이름만 같은 함수를 여러 개 정의하는 행위를 일컬어 함수의 오버로드(중복정의 : function overloading)이라고 부름. - 비슷한 함수 여러 개를 같은 이름으로 중복 정의(오버로드)해 두면, 그 이름과 일치하는 함수 중 인수의 형(type)과 개수가 일치하는 함수가 자동적으로 호출됨. - 오버르드 기능을 활용하면 가독성이 높은 코드를 작성할 수 있음. - 오버르드 사용시 주의점 -> 오버로드할 함수는 그 인수의..
-
2017.05.25
기본 인수 (Default Argument)
* 기본 인수 (Default Argument) - 함수 프로토타입 선언 시 기본 인수(default argumet)를 지정하는 것이 일반적임. - 기본 인수를 지정해 두면, 함수 호출시 실인수를 생략할 수 있다는 장점이 있음. - 실인수를 생략하면 미리 지정해둔 기본값이 함수에 넘겨짐. - 기본 인수를 지정한 함수 프로토타입 선언 리턴 값의 형(type) 함수명(형(type) 가인수명 = 기본값, ...); - 기본 인수는 함수 선언 혹은 함수 프로토타입 선언시 한 번만 지정함. - 즉, 함수 프로토타입 선언에서 기본 인수를 지정했다면, 함수 본체를 정의할 때에는 기본 인수를 선언할 수 없음. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2..
-
2017.05.25
인라인 함수 (Inline Function)
* 인라인 함수 (inline function) - 정의 inline 리턴 값의 형 함수 이름(인수리스트) { ... } - 함수 선언부 앞에 inline이 붙여진 함수. - 인라인 함수의 몸체는 컴파일러에 의해 호출 부분에 직접 기록되므로 전체적인 속도 향상을 꾀할 수 있음. - 그러나 너무 긴 코드는 컴파일러가 인라인 함수로 인정하지 않기도 함. - 컴파일러는 간단한 처리만 인라인 함수로 인정하고, 호출 부분에 함수 전체를 기록해 줌.
-
2017.05.25
const
* const - const 키워드 const 형명 식별자 = 식(expression); - const를 사용하여 변수를 초기화하면, 이보다 뒤에 등장한 코드에서는 const가 지정된 해당 변수에 값을 대입할 수 없게 됨. - const로 지정한 변수는 그 값을 변경할 수 없기 때문에, 상수(constant)라고 부르기도 함. - 상수를 사용할 경우, 프로그램 변경이 매우 간편해진다는 장점이 있음. - const 키워드 사용시 주의해야 할 점 1) const 키워드를 지정한 상수는 나중에 그 값을 바꿀 수 없음. (바꾸려고 할 경우 컴파일 오류 발생) 2) const가 지정된 변수는 반드시 초기화 작업이 필요함. (초기화하지 않은 상수에 값을 대입하려 할 경우 컴파일 오류 발생) 1 2 3 4 5 6 7..
-
2017.05.25
키보드 입력
* 키보드 입력 - 키보드에서 입력을 받을 때에는 cin >> 라는 단어를 사용함. - 공백과 같은 입력은 무시됨. - >> 기호에는 키보드 입력을 지정한 변수로 보내는 기능이 있음. 1 2 3 4 5 6 7 8 9 10 11 12 #include using namespace std; int main() { int num = 0; cout num; cout > num2; cout
-
2017.05.25
숫자 리터럴 (Number Literal)
* 숫자 리터럴 - 숫자 리터럴은 다음과 같은 종류가 있음. 1) 정수 리터럴 (Integerl Literal) ex) 3, 4, 100 2) 부동 소수점 리터럴 (Floating-point Literal) ex) 1.4, 3.53 - 숫자 리터럴은 ' '나 " "로 감싸지 않음. - 8진수 및 16진수 표기법 1) 8진수 : 숫자 앞에 0를 붙임. 2) 16진수 : 숫자 앞에 0x를 붙임. 1 2 3 4 5 6 7 8 9 10 11 #include using namespace std; int main() { cout
-
2017.05.25
이스케이프 시퀀스 (Escape Sequence)
이스케이프 시퀀스 의미하는 문자 \a 경고음 \b 백스페이스 \f 페이지 나누기 \n 줄바꿈 \r 복귀 \t 수평 탭 \v 수직 탭 \\ \ \' ' \" " \? ? \ooo 8진수 ooo 문자 코드로 표기할 수 있는 문자 (0는 0~7까지의 숫자) \xhh 16진수 hh 문자 코드로 표기할 수 있는 문자(h는 0~9까지의 숫자와 A~F까지의 영문자)
-
2017.05.25
swipejs 플러그인 활용하기
* swipejs 플러그인 - 스마트폰 액정에서 손으로 터치하여 좌우로 밀어 이전 또는 다음 배너로 넘어가는 터치 슬라이드 배너를 쉽고 간단하게 만들 수 있음. - 기본 메서드 적용 방법(기본형) window.mySwipe = $(요소 선택).Swipe({ 옵션 설정 }).data('Swipe'); - swipejs 플러그인의 옵션 종류 종류 설명 startSlide: 숫자 (default:0) 인덱스 값으로 초기에 열릴 슬라이드를 지정함. auto: 밀리초 자동 슬라이드 이동 시간을 설정함. continuous: 논릿값 (default:true) 슬라이드 이동 시 연속적으로 반복, 롤링되어 나오게 할 것인지 설정함. disableScroll: 논릿값 (default:false) 브라우저에 스크롤바를 사..
-
2017.05.25
Accordion Image 플러그인 활용하기
* Accordion Image 플러그인 - 문단 태그의 내용을 마치 아코디언 악기처럼 펼쳐졌다 줄여지는 기능을 쉽게 구현시킬 수 있는 플러그인 라이브러리 파일. - 기본 메서드 적용 방법 (기본형) $("요소 선택").AccordionImageMenut({ 옵션 설정 }); - Accordion Image 옵션 종류 종류 설명 position 아코디언 방향을 가로("horizontal")로 할지 세로("vertical")로 할지 설정함. openItem 값을 0으로 설정하면 초기 화면부터 첫 번째 배너가 펼쳐져 있게 됨. 1로 설정하면 두번째 배너가 펼쳐져 있게 됨. openDim 펼쳐져 있는 배너의 너비를 설정함. closeDim 닫혀 있는 배너의 너비를 설정함. width 전체 배너의 너비를 설정함..
-
2017.05.25
bxSlider 플러그인 활용하기
* bxSlider 플러그인 - bxSlider 플러그인을 사용하면, 슬라이드 배너나 자동으로 재생되는 슬라이드 배너를 쉽고 간단히 만들 수 있음. - 기본 메서드 적용 방법 (기본형) var 참조 변수 = $('요소 선택').bxSlider({ 옵션 설정 }); - bxSlider 옵션 종류 종류 기본값 데이터 형식 설명 mode "horizontal" "horizontal" "vertical" "fade" 슬라이드 이동 방향을 설정 speed 500 숫자형 값 슬라이드 전환 시 속도를 설정 pager true 논리형 값 현재 위치를 알리는 불릿(동그라미 버튼) 노출 여부를 설정 moveSlides 0 숫자형 값 슬라이드 이동 시 개수를 설정 sliderWidth 0 숫자형 값 슬라이드마다 너비를 설정..
-
2017.05.25
제이쿼리 UI 플러그인
* 제이쿼리 플러그인이란? - 제이쿼리 플러그인(plug-in)은 여러 개발자가 드레그 & 드롭, 슬라이드 배너, 툴 팁 기능 등을 구현해 놓은 프로그래밍을 자바스크립트 파이로 제공하는 제이쿼리 라이브러리를 의미함. - 제이쿼리 플러그인을 내 웹 문서에 가져다 연동시키기만 하면 바로 사용할 수 있음. - 제이쿼리 플러그인은 사용하고자 하는 기능의 플러그인을 검색하여 다운로드받고 웹 문서에 연동해 선택한 요소에 기능(Method)만 적용하면, 간단한 코드 삽입만으로도 복잡하고 어려운 기능을 쉽게 구현할 수 있음. - 거의 모든 플러그인에는 예제(Demo) 파일이 포함되어 있어, 이것을 참고하면 누구나 웹 문서에 어렵지 않게 플러그인 기능을 적용할 수 있음. * UI를 개발할 때 유용한 플러그인 - 검색 사..
-
2017.05.25
Ajax로 RSS 연동하기
- RSS(Really Simple Syndication)란, 사전저긍로 '초간편 배급(배포)'이라는 의미를 가지고 있음. - 자주 업데이트되는 뉴스나 신문 기사 내용을 사용자에게 쉽게 배포하기 위해 만들어진 XML 기반의 배급 포맷. - 크로스 도메인이란 도메인이 서로 다를 경우에 정보 교환을 하지 못하도록 한 보안 정책을 의미하며, 이를 해결할 수 있는 방법으로는 구글에서 제공하는 Google Feed API link(데이터 전환 전송 기능)을 이용하는 것이 있음. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 4..
-
2017.05.25
Ajax 관련 메서드
* Ajax 관련 메서드들 - Ajax(Asynchronous JavaScript and XML)는 클라이언트(방문자 컴퓨터)가 비동기 방식으로 자바스크립트를 이용하여 환면 전환 없이 서버(서비스 제공 컴퓨터) 층에 자료(XML, (X)HTML, JSON, 텍스트 유형 등)를 요청할 때 사용함. - Ajax 관련 메서드의 종류 종류 풀이 load() 외부 콘텐츠를 가져올 때 사용함. $.ajax() 데이터를 서버에 HTTP, POST, GET 방식으로 전송이 가능하며, (X)HTML, XML, JSON, 텍스트 유형에 데이터를 요청할 수 있는 통합적인 메서드. 이 표에서 $.post(), $.get(), $.getJSON() 메서드의 기능을 하나로 합쳐 놓은 것이라고 보면 됨. $.post() 데이터를 ..
-
2017.05.25
Ajax란?
* Ajax란? - Ajax(Asynchronous JavaScript and XML)란, 비동기 방식의 JavaScript와 XML을 의미함. - 동기 방식과 비동식 방식의 차이점 -> 동기 방식의 경우는 서버에 신호를 보냈을 때 응답이 돌아와야 다음 동작을 수행할 수 있지만, 비동기 방식은 그와 반대로 신호를 보냈을 때 응답 상태와 상관 없이 다음 동작을 수행할 수 있음. - Ajax를 이용한는 주목적 -> 화면 전환 없이 클라이언트(방문자 컴퓨터) 측과 서버(서비스를 제공하는 컴퓨터) 측 간의 XML, JSON(JavaScript Object Notation), 텍스트, (X)HTML 등의 정보를 교환하기 위해서. - Ajax를 이용하면 방문객이 보는 컴퓨터에서 서버(Server)에 자료를 요청할 ..
-
2017.05.24
효과 제어 메서드
* 효과 제어 메서드란? - 효과 또는 애니메이션이 적용된 요소에 동작을 정지시키거나 동작 초기 실행을 지연시키는 등의 제어를 할 수 있는 메서드 - 효과 제어 메서드의 종류 종류 풀이 stop() 현재 실행 중인 효과를 모두 정지시킴. delay() 스택에 대기 중인 애니메이션 효과를 지연시킴. 다시 말하면, 대기 중인 효과가 지정한 시간만큼 지연된 후 발생됨. queue() 선택된 요소의 스택에 대기 중인 큐를 반환하거나 함수에 실행문을 큐로 추가시킬 수 있음. clearQueue() 첫 번째 큐에 해당하는 효과 또는 애니메이션만 실행하고 대기 중인 큐를 모두 삭제함. dequeue() 스택에 쌓인 큐를 모두 제거함. finish() 선택한 요소의 진행 중인 애니메이션이 강제로 완료 시점으로 간 후 ..
-
2017.05.24
효과 및 애니메이션 메서드
* 효과 및 애니메이션 메서드 - 문서 객체를 보이게 했다가 숨기려면 스타일(CSS)에 display 속성을 사용해야 함. - 스타일을 이용하면 객체는 단순히 보였다가 숨겨짐. - 하지만 효과(Effect) 메서드를 사용하면 스타일(CSS)을 사용하는 것보다 좀 더 역동적인 동작을 적용하여 객체를 화려하게 숨기거나 보이게 만들 수 있음. - 효과에 애니메이션 메서드까지 사용하면 선택한 요소에 다양한 동작(Motion)을 적용시킬 수 있음 * 효과 메서드 - 효과(Effect) 메서드에는 선택한 요소를 역동적으로 숨겼다가 보이게 만드는 기능을 가진 메서드, 선택한 요소에 동작을 적용시킬 수 있는 애니메이션 메서드가 있음. - 효과 메서드의 종류 종류 풀이 hide() 노출되어 있는 요소를 숨김. show(..