diff --git a/.eslintrc.js b/.eslintrc.js index 0026692..c5b9a4b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -4,29 +4,28 @@ module.exports = { node: true, jest: true, }, - extends: 'airbnb-base', + extends: "airbnb-base", overrides: [ { env: { node: true, }, - files: [ - '.eslintrc.{js,cjs}', - ], + files: [".eslintrc.{js,cjs}"], parserOptions: { - sourceType: 'script', + sourceType: "script", }, }, ], parserOptions: { - ecmaVersion: 'latest', - sourceType: 'module', + ecmaVersion: "latest", + sourceType: "module", }, rules: { - 'operator-assignment': 'off', - 'max-classes-per-file': 'off', - 'no-plusplus': 'off', - 'no-restricted-syntax': 'off', - 'no-param-reassign': 'off', + "operator-assignment": "off", + "max-classes-per-file": "off", + "no-plusplus": "off", + "no-restricted-syntax": "off", + "no-param-reassign": "off", + quotes: "off", }, }; diff --git a/problem-1/problem-1-1.png b/problem-1/problem-1-1.png new file mode 100644 index 0000000..326c26e Binary files /dev/null and b/problem-1/problem-1-1.png differ diff --git a/problem-1/problem-1.test.js b/problem-1/problem-1.test.js index f54f840..e639267 100644 --- a/problem-1/problem-1.test.js +++ b/problem-1/problem-1.test.js @@ -1,12 +1,25 @@ const bubbleSort = (array) => { + let swapped = false; + + for (let i = 0; i < array.length; i++) { + for (let j = 0; j < array.length - 1 - i; j++) { + if (array[j] > array[j + 1]) { + swapped = true; + let temp = array[j]; + array[j] = array[j + 1]; + array[j + 1] = temp; + } + } + if (!swapped) return array; + } + return array; }; -test.each([ - [[5, 4, 3, 2, 1]], - [[1, 2, 3, 4, 5]], - [[4, 2, 1, 5, 3]], -])('주어진 배열을 오름차순으로 정렬한다', (array) => { - bubbleSort(array); +test.each([[[5, 4, 3, 2, 1]], [[1, 2, 3, 4, 5]], [[4, 2, 1, 5, 3]]])( + "주어진 배열을 오름차순으로 정렬한다", + (array) => { + bubbleSort(array); - expect(array).toEqual([1, 2, 3, 4, 5]); -}); + expect(array).toEqual([1, 2, 3, 4, 5]); + }, +); diff --git a/problem-2/problem-2-2.png b/problem-2/problem-2-2.png new file mode 100644 index 0000000..8245696 Binary files /dev/null and b/problem-2/problem-2-2.png differ diff --git a/problem-2/problem-2.test.js b/problem-2/problem-2.test.js index 1e1fe4f..49987cf 100644 --- a/problem-2/problem-2.test.js +++ b/problem-2/problem-2.test.js @@ -1,12 +1,24 @@ const selectionSort = (array) => { + for (let i = 0; i < array.length - 1; i++) { + let minIndex = i; + for (let j = i + 1; j < array.length; j++) { + if (array[j] < array[minIndex]) { + minIndex = j; + } + } + if (minIndex !== i) { + let temp = array[i]; + array[i] = array[minIndex]; + array[minIndex] = temp; + } + } }; -test.each([ - [[5, 4, 3, 2, 1]], - [[1, 2, 3, 4, 5]], - [[4, 2, 1, 5, 3]], -])('주어진 배열을 오름차순으로 정렬한다', (array) => { - selectionSort(array); +test.each([[[5, 4, 3, 2, 1]], [[1, 2, 3, 4, 5]], [[4, 2, 1, 5, 3]]])( + "주어진 배열을 오름차순으로 정렬한다", + (array) => { + selectionSort(array); - expect(array).toEqual([1, 2, 3, 4, 5]); -}); + expect(array).toEqual([1, 2, 3, 4, 5]); + }, +); diff --git a/problem-3/problem-3-2.png b/problem-3/problem-3-2.png new file mode 100644 index 0000000..d2a7da2 Binary files /dev/null and b/problem-3/problem-3-2.png differ diff --git a/problem-3/problem-3.test.js b/problem-3/problem-3.test.js index e4450b5..a481595 100644 --- a/problem-3/problem-3.test.js +++ b/problem-3/problem-3.test.js @@ -1,12 +1,32 @@ +const exchange = (list, a, b) => { + [list[b], list[a]] = [list[a], list[b]]; +}; + +const less = (a, b) => a < b; + const insertionSort = (array) => { + const { length } = array; + + for (let i = 1; i < length; i++) { + for (let j = i; j > 0; j--) { + if (array[j] < array[j - 1]) { + [array[j - 1], array[j]] = [array[j], array[j - 1]]; + } else { + break; + } + } + } }; -test.each([ - [[5, 4, 3, 2, 1]], - [[1, 2, 3, 4, 5]], - [[4, 2, 1, 5, 3]], -])('주어진 배열을 오름차순으로 정렬한다', (array) => { - insertionSort(array); +// 테스트 +let array = [5, 3, 8, 1, 2]; +console.log(insertionSort(array)); // [1, 2, 3, 5, 8] + +test.each([[[5, 4, 3, 2, 1]], [[1, 2, 3, 4, 5]], [[4, 2, 1, 5, 3]]])( + "주어진 배열을 오름차순으로 정렬한다", + (array) => { + insertionSort(array); - expect(array).toEqual([1, 2, 3, 4, 5]); -}); + expect(array).toEqual([1, 2, 3, 4, 5]); + }, +);