정렬
백준 / 정렬 / 8979번 / 올림픽 / JS
8979번: 올림픽 입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 www.acmicpc.net const fs = require('fs'); const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt'; // const filePath = process.platform === 'linux' ? '/dev/stdin' : 'BOJ/input.txt'; const input = fs.readFileSync(filePath).toString..
백준 / 정렬 / 2587번 / 대표값2 / JS
2587번: 대표값2 어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + www.acmicpc.net const fs = require('fs'); // const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt'; const filePath = process.platform === 'linux' ? '/dev/stdin' : 'BOJ/input.txt'; const input = fs.readFileSync(filePath)..
Algorithm / 정렬 / Radix Sort (기수 정렬)
기수 정렬 // 뒤에서 idx 번째 자릿수를 얻는 함수 function getDigit(num, idx) { // return Math.floor(Math.abs(num) / Math.pow(10, i)) % 10; return Number(String(num).at(-(idx + 1))) || 0; } // 숫자의 자릿수가 몇인지 return 하는 함수 function digitCount(num) { if (num === 0) return 1; // return Math.floor(Math.log10(Math.abs(num))) + 1; return String(num).length; } // 가장 큰 자릿수를 찾는 함수 function mostDigit(nums) { let max = 0; for (..
Algorithm / 정렬 / Quick Sort (퀵 정렬)
퀵 정렬 function quickSort1(arr) { if (arr.length { [array[i], array[j]] = [array[j], array[i]]; }; let pivot = arr[start]; let swap_idx = start; // 마지막에 위치해야 할 인덱스 for (let i = start + 1; i arr[i]) { swap_idx++; swap(arr, swap_idx, i); } } swap(arr, start, swap_idx); return swap_idx; } function quickSort2(arr, left = 0, right = arr.length - 1) { if (left < right) {..
Algorithm / 정렬 / Merge Sort (합병 정렬)
합병 정렬 function merge(left_arr, right_arr) { let result = []; let [i, j] = [0, 0]; while (i < left_arr.length && j < right_arr.length) { if (left_arr[i] < right_arr[j]) { result.push(left_arr[i]); i++; } else { result.push(right_arr[j]); j++; } } while (i < left_arr.length) { result.push(left_arr[i]); i++; } while (j < right_arr.length) { result.push(right_arr[j]); j++; } return result; } functio..
Algorithm / 정렬 / Insertion Sort (삽입 정렬)
삽입 정렬 function insertion_sort(arr) { console.log(`Before insertion sorting: ${[...arr]}`); let cnt = 0; for (var i = 1; i = 0 && arr[j] > cur; j--) { if (cur < arr[j]) arr[j + 1] = arr[j]; cnt++; } arr[j + 1] = cur; } console.log(`After insertion sorting: ${[...arr]}`); console.log(`Sorting count = ${cnt}`); } let arr = [3, 6, 13, 4..