🍀 코딩 테스트/쉽게 배우는 JavaScript 알고리즘 입문 12

그룹 알고리즘

//문제: 컬렉션 형태의 데이터를 특정 키 값으로 그룹화. // 그룹 알고리즘(Group Algorithm): 특정 키 값에 해당하는 그룹화된 합계 리스트 만들기 //테스트용 레코드 JSON 배열 (function () { //[1] Input: 테스트용 레코드 JSON 배열 let records = [ { Name: "RADIO", Quantity: 3 }, { Name: "TV", Quantity: 1 }, { Name: "RADIO", Quantity: 2 }, { Name: "DVD", Quantity: 4 }, ]; // 입력 데이터 let groups = []; // 출력 데이터 let N = records.length; // 의사코드 //[2] Process: Group 알고리즘 (SORT ..

최빈값 알고리즘

## 최빈값 알고리즘 : 데이터 중에서 가장 많이 나타난 값. 최빈값 알고리즘의 핵심은 배열의 데이터 자체를 index로 보는 것이다. 예를 들어서 let scores = [1, 3, 4, 3, 5]; 이 점수들을 index로 취급하는 것이다. 그래서 1이면 1번째 index 1증가, 3이면 3번째 index에 2가 증가하는 것이다. (3이 두번 나왔기 때문이다.) 그리고 그 값의 최댓값의 대한 index를 찾아내주면 그게 최빈값이다. 정리하자면 데이터를 index로 취급하고 개수 알고리즘을 사용. 그리고 최댓값을 구해주면 그것이 최빈값이 된다. // 문제: 주어진 데이터에서 가장 많이 나타난(중복된) 값 // 최빈값 알고리즘(Mode Algorithm): 점수 인덱스(0 ~ n)의 개수(Count)의 ..

선택 정렬 알고리즘

// 무작위 데이터를 순서대로 [오름차순 | 내림차순] 정렬 //정렬 알고리즘 : 가장 작은/큰 데이터를 왼쪽으로 순서대로 이동 (function () { //[1] Input: Data Structure (Array,List,Stack,Queue,Tree,DB) let data = [3, 2, 1, 5, 4]; // 정렬되지 않은 데이터 const N = data.length; //[2] Process: Selection Sort (선택정렬) 알고리즘 for (let i = 0; i data[j]) { //부등호 방향: 오름차순(>) 내림차순(

순위알고리즘

// 문제: 주어진(지정한 범위)데이터 순위(등수)를 구하는 로직 // 순위알고리즘(Rank Algorithm) :점수 데이터에 대한 순위 구하기 (function () { //[1] Input var scores = [90, 87, 100, 95, 80]; //등수 3,4,1,2,5 var N = scores.length; var rankings = Array(N).fill(1); // 핵심: 모두 1로 초기화. 그리고 나보다 큰 정수가 나오면 하나씩 등수를 떨어뜨리는 작업 //[2] Process for (let i = 0; i < N; i++) { rankings[i] = 1; //순위 배열을 매 회전마다 1등으로 초기화 for (let j = 0; j < N; j++) { if (scores[i]..

근사값 알고리즘

// 문제: 원본 데이터 중에서 대상 데이터와 가장 가까운 값 // 근사값 알고리즘(Near Alogrithm): 가까운 값을 구한다. -> 차잇값의 절대값의 최솟값 (function () { // [0] Initialize let min = Number.MAX_SAFE_INTEGER; // [1] Input var numbers = [10, 20, 30, 27, 17]; //예상 결과 값: 27 var target = 25; //target과 가장 가까운 값 var near = 0; // [2] Process: Near for (let i = 0; i < numbers.length; i++) { var abs = Math.abs(numbers[i] - target); if (abs < min) { mi..

최솟값 알고리즘

// 문제: 주어진 데이터 중에서 가장 작은 짝수 값 // 최솟값 알고리즘(Min Alogorithm): 주어진범위 + 주어진 조건의 자료들의 가장 작은 값. (function () { // [0] Initialize => 최댓값, 최솟값 알고리즘은 초기화가 반드시 필요 (해당 데이터에서 가장 큰 데이터를 넣는다) let min = Number.MAX_SAFE_INTEGER; //[1] Input var numbers = [2, 5, 3, 7, 1]; let N = numbers.length; //[2] Process for (let i = 0; i < N; i++) { if (numbers[i] < min && numbers[i] % 2 === 0) { min = numbers[i]; } } //[3]..

최댓값 알고리즘

// 문제: 주어진 데이터 중에서 가장 큰 값 // 최댓값 알고리즘(Max Algorithm): 의 자료들의 가장 큰 값 (function () { // [0] Initialize => 최댓값, 최솟값 알고리즘은 초기화가 반드시 필요 (해당 데이터에서 가장 작은 데이터를 넣는다) var max = Number.MIN_SAFE_INTEGER; // 숫자 형식의 데이터 중 가장 작은 값으로 초기화 // Number.MIN_SAFE_INTEGER => 가장 작은 값 불러옴 //[1] Input var numbers = [-2, -5, -3, -7, -1]; var N = numbers.length; //[2] Process for (i = 0; i max) ..

평균 알고리즘

// 문제: n명의 점수 중에서 80점 이상 95점 이하인 점수의 평균 // 평균 알고리즘 (Average Algorithm): 주어진 범위에 주어진 조건에 해당하는 자료들의 평균. (function () { //[1] Input (입력) :n명의 성적 var data = [90, 65, 78, 50, 95]; var sum = 0; //합계 담는 그릇 var count = 0; //개수 담는 그릇 //[2] Process(처리) //평균 알고리즘 = sum 알고리즘 / count알고리즘 for (i = 0; i = 80 && data[i]

개수 알고리즘

// 문제: 1부터 1,000까지의 정수 중 13의 배수의 개수(건수,횟수) //개수 알고리즘 (Count Algorithm): 주어진 범위에 주어진 조건에 해당하는 자료들의 개수 // [1] Input: 1부터 1,000까지의 데이터 var count = 0; //개수를 저장할 변수는 0으로 초기화 // [2] Process //개수 알고리즘 영역: 주어진 범위에 주어진 조건 (필터링) for (i = 1; i

1 2