반응형

분류 전체보기 272

[JavaScript] JavaScript로 힙(Heap) 구현하기

Heap 힙(Heap) 이란? 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전 이진트리를 기본으로 한 자료구조로서 다음과 같은 힙 속성을 만족한다. A가 B의 부모 노드 이면, A의 키값과 B의 키값 사이에는 대소 관계가 성립한다. 트리구조이기 때문에 시간 복잡도 O(logN)이 소요된다. 최댓값 최솟값을 빠르게 구하기 찾을 수 있다. JavaScript의 경우 내장 라이브러리에 Heap구조가 없기 때문에 직접 구현해야 한다. (외부 라이브러리로는 적용 가능) 위의 이미지는 1부터 100까지의 정수를 저장한 최대 힙의 예시 모습이다. 모든 부모 노드들이 그 자식 노드들보다 큰 값을 가진다. 1. Heap에서의 부모 이진트리로 부모와 자식 노드가 발생하며, 완전 이진트리가 아니라 반정렬 ..

JavaScript 2022.12.10

[프로그래머스/JavaScript] Lv.1 기사단원의 무기

해당 문제는 약수의 개수를 빠르게 구하는 게 중요한 문제이다. https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 숫자나라 기사단의 각 기사에게는 1번부터 number까지 번호가 지정되어 있습니다. 기사들은 무기점에서 무기를 구매하려고 합니다. 각 기사는 자신의 기사 번호의 약수 개수에 해당하는 공격력을 가진 무기를 구매하려 합니다. 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 ..

Algorithm 2022.12.09

[프로그래머스/JavaScript] Lv.1 문자열 나누기

해당 문제는 반복문(for) 조건(if)에 따라 답을 구하는 문제입니다. https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 입출력 예 3. 문제 풀이 function solution(s) { // 1) a:동일할 경우 증가, b:다른 경우 증가 let answer=a=b=0; // 2) 비교 문자 let word=''; // 3) true 경우만 비교 문자를 담는다. let isTrue = true; // 4) 문자열 하나..

Algorithm 2022.12.08

[프로그래머스/JavaScript] Lv.2 점 찍기

해당 문제는 시간 복잡도 O(n) 또는 O(log n)에서 답을 도출하는 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 입출력 예 3. 문제 풀이 시간 복잡도가 중요한 문제로 O(n) 또는 O(log n)로 풀어야한다. (이중 for문 X) function solution(k, d) { let answer = 0; // 1) x좌표 값 만큼 반복 실행 for(let x=0; x

Algorithm 2022.12.07

[프로그래머스/JavaScript] Lv.2 이진 변환 반복하기

해당 문제는 진수 변화를 반복하는 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 입출력 예 3. 문제 풀이 재귀 함수를 통해 s의 값이 1이 될 때까지 반복하여 값을 구한다. function solution(s) { return dfs(s, 0, 0); }; // 1) 재귀 함수를 통해 마지막 결과 값을 가져온다. function dfs(s, cnt, len) { // 2) s 값이 1이되면 반복 횟수, 0삭제 갯수를 return 한다. if(s == 1) return [cnt, len]; // 3) s의 총길 let af..

Algorithm 2022.12.06

[프로그래머스/JavaScript] Lv.3 억억단을 외우자

해당 문제는 시간 복잡도 개선하는 수학적 사고가 필요한 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 입출력 예 3. 문제 풀이 function solution(e, starts) { // 1) e이하의 자연수이기 때문에 e만큼 배열 생성 const numsArr = new Array(e+1).fill(0); /* 2) 약수의 개수를 한번에 count하는 반복문 인덱스 번호를 자연수로 정하고, 해당 자연수에 대한 약수를 반복문을 통해 하나씩 증가시킨다. */ for(let i = 1;i= numsArr[maxArr[i+1]..

Algorithm 2022.12.05

[JavaScript] Set 객체(Set Object) 메서드 및 반복문 사용 방법

Set 셋(Set)이란? ES6에 새롭게 추가된 자료구조로 현실 세계를 반영하기엔 객체(Object)와 배열(Array) 만으론 부족해서 맵(Map)과 셋(Set) 이 등장하게 되었다. Set은 중복을 허용하지 않고, 키가 없는 값이 저장된다. 1. Set 주요 메서드 사용 방법 // Set 선언, 이터러블 객체를 전달받으면(대개 배열을 전달받음) 그 안의 값을 복사해 셋에 넣어준다. let set =new Set(iterable) // 값 추가 set.add(value) // 값 제거, 호출 시점에 셋 내에 값이 있어서 제거에 성공하면 true, 아니면 false를 반환한다. set.delete(value) // Set 내에 값이 존재하면 true, 아니면 false를 반환 set.has(value) ..

JavaScript 2022.12.02

[JavaScript] Map 객체(Map Object) 메서드 및 반복문 사용 방법

Map Map Obejct란? ES6에 새롭게 추가된 자료구조로 현실 세계를 반영하기엔 객체(Object)와 배열(Array) 만으론 부족해서 맵(Map)과 셋(Set) 이 등장하게 되었다. Obeject와 Map 차이 1) Map은 객체(Object)와 달리 key를 문자형으로 변환하지 않는다. key엔 자료형 제약이 없다. 2) Map은 값이 삽입된 순서를 기억하여 순서대로 순회를 실시하지만, 객체(Obejct)는 순서를 못 한다. 3) Map을 객체(Obejct)처럼 map [key] 방식으로 사용할 수 있지만, 그렇게 되면 Map을 일반 객체(Object)로 취급하게 된다. 1. Map 주요 메서드 사용 방법 // Map Object 선언 let map = new Map() // let map =..

JavaScript 2022.12.01

[프로그래머스/JavaScript] Lv.1 명예의 전당 (1)

해당 문제는 반복문과 정렬을 통해 답을 도출하는 문제이다. 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 2. 입출력 예 3. 문제 풀이 function solution(k, score) { var answer = []; // 1) 명예의전당(k)을 담는 배열 생성 var nums = []; // 2) score에 담긴 점수를 하나씩 꺼낸다. score.forEach(num => { // 3) 명예의 전당에 넣는다. nums.push(num); // 4) 명예의 전당 배열을 내림차순으로 정렬하고 상위 k번까지 자른다. nums.sort((..

Algorithm 2022.11.30

[JavaScript] 고차함수 map(), filter(), reudce() 사용 방법

고차 함수 고차 함수란? 함수를 인자로 전달받거나 함수를 결과로 반환하는 함수를 말한다. 1. map() 기존 배열 요소를 가지고 새로운 요소로 변경하여 반환한다. const map_reuslt = [1, 2, 3, 4].map((value, index, array)=>{ console.log(value); // 1, 2, 3, 4 출력 return value*10; // 각 요소에 10을 곱한 값을 배열로 반환 }); console.log(map_reuslt); // [ 10, 20, 30, 40 ] 콜백 함수의 매개변수로 value에 요소 값, index에 인덱스, array에 원본 배열이 들어온다. 각 콜백함수에서 return 하는 값 들으러 새로운 배열을 만들어 반환한다. 2. filter() 기..

JavaScript 2022.11.29
반응형