Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
1961da3
02 배열 - 2 배열 사용하기
neverlish Sep 12, 2017
d3fec63
02 - 3 접근자 함수
neverlish Sep 12, 2017
45aa525
02 - 4 변형자 함수
neverlish Sep 12, 2017
2840c10
02 - 5 반복자 함수
neverlish Sep 12, 2017
9eed5a4
02 - 6 이차원 배열과 다차원 배열
neverlish Sep 12, 2017
f91f38c
02 - 7 객체를 요소로 포함하는 배열
neverlish Sep 12, 2017
81f575e
02 - 8 객체에 포함된 배열
neverlish Sep 12, 2017
6ed5a45
02 - 9 연습문제
neverlish Dec 31, 2017
58e8e78
03 리스트 - 2 List 클래스 구현
neverlish Sep 13, 2017
3a565cb
03 - 3 리스트와 반복
neverlish Sep 13, 2017
dd756d0
03 - 4 리스트 기반 애플리케이션
neverlish Sep 13, 2017
ea7d43d
03 - 5 연습문제
neverlish Jan 1, 2018
6385373
04 스택 - 2 스택 구현
neverlish Sep 13, 2017
0ad31a7
04 - 3 Stack 클래스 이용하기
neverlish Sep 13, 2017
74d4b74
asd
neverlish Jan 1, 2018
e0a0039
05 큐 - 2 배열 기반의 Queue 클래스 구현
neverlish Sep 13, 2017
341c772
05 - Queue클래스 사용하기: 스퀘어 댄스 파티에서 파트너 정하기
neverlish Sep 13, 2017
83266e2
05 - 4 큐로 데이터 정렬하기
neverlish Sep 13, 2017
e5750eb
05 - 5 우선순위 큐
neverlish Sep 13, 2017
e8cfcae
05 - 6 연습문제
neverlish Sep 13, 2017
f9c9f9c
06 연결 리스트 - 3 객체 기반 연결 리스트 설계
neverlish Sep 13, 2017
5399067
06 - 4 양방향 연결 리스트
neverlish Sep 13, 2017
37778bf
06 - 5 순환형 연결 리스트
neverlish Sep 13, 2017
abe8636
06 - 7 연습문제
neverlish Sep 13, 2017
34cb9f8
07 딕셔너리 - 1 Dictionary 클래스
neverlish Sep 13, 2017
0481942
07 - 2 Dictionary 클래스의 부가 함수
neverlish Sep 13, 2017
bb67a52
07 - 3 Dictionary 클래스에 정렬 기능 추가하기
neverlish Sep 13, 2017
79c95fd
07 - 4 연습문제
neverlish Sep 14, 2017
1a334e8
08 해싱 - 2 해시 테이블 클래스
neverlish Sep 14, 2017
0e4834a
08 - 3 충돌 처리
neverlish Sep 14, 2017
c5eebda
08 - 4 연습문제
neverlish Sep 14, 2017
ee51589
09 집합 - 2 Set 클래스 구현
neverlish Sep 14, 2017
5e28510
09 - 3 집합의 추가 동작
neverlish Sep 14, 2017
f7d2dc4
09 - 4 연습문제
neverlish Sep 14, 2017
17a106f
10 이진 트리와 이진 검색 트리 - 2 이진 트리와 이진 검색 트리
neverlish Sep 14, 2017
4997f77
10 - 3 BST 검색
neverlish Sep 14, 2017
4a62391
10 - 4 BST의 노드 삭제하기
neverlish Sep 14, 2017
369c675
10 - 5 발견 횟수 계산
neverlish Sep 14, 2017
2717205
10 - 6 연습문제
neverlish Sep 14, 2017
9d4a50e
11 그래프와 그래프 알고리즘 - 3 Graph 클래스
neverlish Sep 14, 2017
1c63e17
11 - 4 그래프 검색
neverlish Sep 14, 2017
3f7ae67
11 - 5 최단 경로 찾기
neverlish Sep 14, 2017
a72a3c9
11 - 6 위상 정렬
neverlish Sep 15, 2017
c017cc9
11 - 7 연습문제
neverlish Sep 15, 2017
d6fcbbf
12 정렬 알고리즘 - 1 배열 테스트 베드
neverlish Sep 15, 2017
4dea565
12 - 2 기본 정렬 알고리즘
neverlish Sep 15, 2017
26a5da0
12 - 3 고급 정렬 알고리즘
neverlish Sep 15, 2017
4944c39
12 - 4 연습문제
neverlish Sep 15, 2017
46f157e
13 검색 알고리즘 - 1 순차 검색
neverlish Sep 17, 2017
300119e
13 - 2 이진 검색
neverlish Sep 17, 2017
e5b9fae
13 - 3 텍스트 데이터 검색
neverlish Sep 17, 2017
602ef33
13 - 4 연습문제
neverlish Sep 17, 2017
007ef0e
14 고급 알고리즘 - 1 동적 프로그래밍
neverlish Sep 17, 2017
63972cb
14 고급 알고리즘 - 2 탐욕 알고리즘
neverlish Sep 17, 2017
03a8fc3
14 - 3 연습문제
neverlish Sep 17, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/2-1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
// 02 배열 - 2 배열 사용하기 - 1 배열 만들기

var numbers1 = [];
console.log(numbers1.length); // 0

var numbers2 = [1,2,3,4,5];
console.log(numbers2.length); // 5

var numbers3 = new Array();
console.log(numbers3.length); // 0

var numbers4 = new Array(1,2,3,4,5);
console.log(numbers4.length); // 5

var numbers5 = new Array(10);
console.log(numbers5.length); // 10

var objects = [1, 'Joe', true, null];


var numbers = 3;
var arr = [7,4,1776];
console.log(Array.isArray(numbers)); // false
console.log(Array.isArray(arr)); // true
17 changes: 17 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/2-2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// 02 배열 - 2 배열 사용하기 - 2 배열 요소 접근하고 값 고치기

var nums = [];
for (var i = 0; i < 100; ++i) {
nums[i] = i+1;
}

var numbers = [1,2,3,4,5];
var sum = numbers[0] + numbers[1] + numbers[2] + numbers[3] + numbers[4];
console.log(sum); // 15

var result = 0;
for (var i = 0; i < numbers.length; ++i) {
result += numbers[i];
}

console.log(result); // 15
7 changes: 7 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/2-3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// 02 배열 - 2 배열 사용하기 - 3 문자열로 배열 만들기

var sentence = 'the quick brown for jumped over the lazy dog';
var words = sentence.split(' ');
for (var i = 0; i < words.length; ++i) {
console.log('word ' + i + ': ' + words[i]);
}
26 changes: 26 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/2-4.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// 02 배열 - 2 배열 사용하기 - 4 배열 전체에 적용되는 기능

var nums = [];
for (var i = 0; i < 100; ++i) {
nums[i] = i+1;
}
var samenums = nums;
nums[0] = 400;
console.log(samenums[0]); // 400

/////////

function copy(arr1, arr2) {
for (var i = 0; i < arr1.length; ++i) {
arr2[i] = arr1[i];
}
}

var nums2 = [];
for (var i = 0; i < 100; ++i) {
nums2[i] = i+1;
}
var samenums2 = [];
copy(nums2, samenums2);
nums2[0] = 400;
console.log(samenums2[0]); // 1
18 changes: 18 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/3-1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// 02 배열 - 3 접근자 함수 - 1 값 검색하기

var names = ['David', 'Cynthia', 'Raymond', 'Clayton', 'Jennifer'];

var name = 'David'
var position = names.indexOf(name);
if (position >= 0) {
console.log('Found ' + name + ' at the position ' + position);
} else {
console.log(name + ' not found in array.');
}

//
var name2 = 'Mike';
var firstPos = names.indexOf(name);
console.log('First found ' + name + ' at position ' + firstPos);
var lastPos = names.lastIndexOf(name);
console.log('Last found ' + name + ' at position ' + lastPos);
7 changes: 7 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/3-2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// 02 배열 - 3 접근자 함수 - 2 배열을 문자열로 표현하기

var names = ['David', 'Cynthia', 'Raymond', 'Clayton', 'Jennifer'];
var nameStr = names.join();
console.log(nameStr); // David,Cynthia,Raymond,Clayton,Jennifer
nameStr = names.toString();
console.log(nameStr); // David,Cynthia,Raymond,Clayton,Jennifer
14 changes: 14 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/3-3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// 02 배열 - 3 접근자 함수 - 3 기존 배열을 이용해 새 배열 만들기

var cisDept = ['Mike', 'Clayton', 'Terrill', 'Danny', 'Jennifer'];
var dmpDept = ['Raymond', 'Cynthia', 'Bryan'];
var itDiv = cisDept.concat(dmpDept);
console.log(itDiv); // [ 'Mike','Clayton','Terrill','Danny','Jennifer','Raymond','Cynthia','Bryan' ]
itDiv = dmpDept.concat(cisDept);
console.log(itDiv); // [ 'Raymond','Cynthia','Bryan','Mike','Clayton','Terrill','Danny','Jennifer' ]

var itDiv2 = ['Mike', 'Clayton', 'Terril', 'Raymond', 'Cynthia', 'Danny', 'Jennifer'];
var dmpDept2 = itDiv2.splice(3,3);
var cisDept2 = itDiv2;
console.log(dmpDept2); // [ 'Raymond', 'Cynthia', 'Danny' ]
console.log(cisDept2); // [ 'Mike', 'Clayton', 'Terril', 'Jennifer' ]
29 changes: 29 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/4-1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// 02 배열 - 4 변형자 함수 - 1 배열에 요소 추가하기

var nums = [1,2,3,4,5];
console.log(nums); // [ 1, 2, 3, 4, 5 ]
nums.push(6);
console.log(nums); // [ 1, 2, 3, 4, 5, 6 ]

var nums2 = [1,2,3,4,5];
console.log(nums2); // [ 1, 2, 3, 4, 5 ]
nums2[nums2.length] = 6;
console.log(nums2); // [ 1, 2, 3, 4, 5, 6 ]

var nums3 = [2,3,4,5];
var newnum = 1;
var N = nums3.length;
for (var i = N; i >= 0; --i) {
nums3[i] = nums3[i-1];
}
nums3[0] = newnum;
console.log(nums3); // [1, 2, 3, 4, 5]

var nums4 = [2,3,4,5];
console.log(nums4); // [2, 3, 4, 5]
var newnum2 = 1;
nums4.unshift(newnum);
console.log(nums); // [1, 2, 3, 4, 5]
nums4 = [3, 4, 5];
nums.unshift(newnum2, 2);
console.log(nums4); // [1, 2, 3, 4, 5]
16 changes: 16 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/4-2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// 02 배열 - 4 변형자 함수 - 2 배열의 요소 삭제하기

var nums = [1,2,3,4,5,9];
nums.pop();
console.log(nums); // [1,2,3,4,5]

var nums2 = [9,1,2,3,4,5];
console.log(nums2); // [9,1,2,3,4,5]
for (var i = 0; i < nums2.length; ++i) {
nums2[i] = nums2[i+1];
}
console.log(nums2); // [1,2,3,4,5,undefined]

var nums3 = [9,1,2,3,4,5];
nums3.shift();
console.log(nums3); // [1,2,3,4,5]
10 changes: 10 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/4-3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// 02 배열 - 4 변형자 함수 - 3 배열 중간에 요소를 추가하거나 배열의 중간에 있는 요소 삭제하기

var nums = [1,2,3,7,8,9];
var newElements = [4,5,6];
nums.splice(3,0,4,5,6);
console.log(nums); // [1,2,3,4,5,6,7,8,9]

var nums2 = [1,2,3,100,200,300,400,4,5];
nums2.splice(3,4);
console.log(nums2); // [1,2,3,4,5];
21 changes: 21 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/4-4.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// 02 배열 - 4 변형자 함수 - 4 배열 요소 정렬하기

var nums = [1,2,3,4,5];
nums.reverse();
console.log(nums); // [5,4,3,2,1]

var names = ['David', 'Mike', 'Cynthia', 'Clayton', 'Bryan', 'Raymond'];
names.sort();
console.log(names); // [ 'Bryan', 'Clayton', 'Cynthia', 'David', 'Mike', 'Raymond' ]

var nums2 = [3,1,2,100,4,200];
nums2.sort();
console.log(nums2); // [ 1, 100, 2, 200, 3, 4 ]

function compare(num1, num2) {
return num1 - num2;
}

var nums3 = [3,1,2,100,4,200];
nums3.sort(compare);
console.log(nums3); // [ 1, 2, 3, 4, 100, 200 ]
69 changes: 69 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/5-1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// 02 배열 - 5 반복자 함수 - 1 배열을 만들지 않는 반복자 함수

function square(num) {
console.log(num, num*num);
}

var nums = [1,2,3,4,5,6,7,8,9,10];
nums.forEach(square);
/*
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
10 100
*/

function isEven(num) {
return num % 2 == 0;
}

var nums2 = [2,4,6,8,10];
var even = nums2.every(isEven);
if (even) {
console.log('all numbers are even'); // printed
} else {
console.log('not all numbers are even');
}

var nums3 = [1,2,3,4,5,6,7,8,9,10];
var someEven = nums3.some(isEven);
if (someEven) {
console.log('some numbers are even'); // printed
} else {
console.log('no numbers are even');
}

nums3 = [1,3,5,7,9];
someEven = nums3.some(isEven);
if (someEven) {
console.log('some numbers are even');
} else {
console.log('no numbers are even'); // printed
}

/////////

function add(runningTotal, currentValue) {
return runningTotal + currentValue;
}

var nums4 = [1,2,3,4,5,6,7,8,9,10];
var sum = nums4.reduce(add);
console.log(sum); // 55

function concat(accumulatedString, item) {
return accumulatedString + item;
}

var words = ['the ', 'quick ', 'brown ', 'fox '];
var sentence = words.reduce(concat);
console.log(sentence); // the quick brown fox

var sencente2 = words.reduceRight(concat);
console.log(sencente2); // fox brown quick the
57 changes: 57 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/5-2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// 02 배열 - 5 반복자 함수 - 2 새 배열을 반환하는 반복자 함수

function curve(grade) {
return grade += 5;
}

var grades = [77, 65, 81, 92, 83];
var newgrades = grades.map(curve);
console.log(newgrades); // [82, 70, 86, 97, 88]

function first(word) {
return word[0];
}

var words = ['for', 'your', 'information'];
var acronym = words.map(first);
console.log(acronym.join('')); // fyi

function isEven(num) {
return num % 2 == 0;
}

function isOdd(num) {
return num % 2 != 0;
}

var nums = [];
for (var i = 0; i < 20; i++) {
nums[i] = i+1;
}
var evens = nums.filter(isEven);
console.log('Even numbers: ' + evens); // Even numbers: 2,4,6,8,10,12,14,16,18,20
var odds = nums.filter(isOdd);
console.log('Odd numbers: ' + odds); // Odd numbers: 1,3,5,7,9,11,13,15,17,19

function passing(num) {
return num >= 60;
}

var grades2 = [];
for (var i = 0; i < 20; ++i) {
grades2[i] = Math.floor(Math.random() * 101);
}
var passGrades = grades2.filter(passing);
console.log('All grades: ' + grades2);
console.log('Passing grades: ' + passGrades);

function afterc(str) {
if (str.indexOf('cie') > -1) {
return true;
}
return false;
}

var words = ['recieve', 'deceive', 'percieve', 'deceit', 'conciet'];
var misspelled = words.filter(afterc);
console.log(misspelled); // [ 'recieve', 'percieve', 'conciet' ]
28 changes: 28 additions & 0 deletions js/hanbit-data-structures-and-algorithms-with-js/02/6-1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// 02 배열 - 6 이차원 배열과 다차원 배열 - 1 이차원 배열 만들기

var twod = [];
var rows = 5;
for (var i = 0; i < rows; ++i) {
twod[i] = [];
}

Array.matrix = function(numrows, numcols, initial) {
var arr = [];
for (var i = 0; i < numrows; ++i) {
var columns = [];
for (var j = 0; j < numcols; ++j) {
columns[j] = initial;
}
arr[i] = columns;
}
return arr;
}

var nums = Array.matrix(5,5,0);
console.log(nums[1][1]); // 0
var names = Array.matrix(3,3,'');
names[1][2] = 'Joe';
console.log(names[1][2]);

var grades = [[89,77,78],[76,82,81],[91,94,89]];
console.log(grades[2][2]); // 89
Loading