분류 전체보기(343)
-
코딩테스트 입문 100문제(javascript) 41. 암호 해독
암호 해독 function solution(cipher, code) { var answer = ''; let arr2= []; let arr=cipher.split(''); for(let i=code-1;i
2023.07.19 -
코딩테스트 입문 100문제(javascript) 40. 개미 군단
개미 군단 function solution(hp) { var answer = 0; let num1 = Math.floor(hp/5); let x= hp%5 let num2 = Math.floor(x/3); let num3 = (x)%3; answer= (num1+num2+num3); return answer; } 문제 설명 개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감..
2023.07.19 -
자료구조 & 알고리즘 (이진 탐색)
이진 탐색 정렬 되어있는 요소들을 반씩 제외하며 찾는 알고리즘 0(log n) 만큼 시간복잡도가 걸린다. 이진 탐색의 특징 ▶ 반드기 정렬이 되어있어야 사용할 수 있다. ▶ 배열 혹은 이진 트리를 이용하여 구현할 수 있다. ▶ 0(log n) 시간복잡도인 만큼 상당히 빠르다. 이진 탐색 트리를 이용한 구현 방법 이진 탐색 트리 이진 탐색을 위한 이진 트리로 왼쪽 서브 트리는 루트보다 작은 값이 모여 있고 오른쪽 서브 트리는 루트보다 큰 값이 모여있다. 이진 탐색 트리의 문제점 ▶ 최악의 경우 한쪽으로 편향된 트리가 될 수 있다. ▶ 그런경우 순차 탐색과 동일한 시간복잡도를 가진다. ▶ 이를 해결하기 위해 다음과 같은 자료구조를 이용할 수 있다. ▶ AVL 트리 ▶ 레드-블랙 트리 JavaScript에서 ..
2023.07.19 -
자료구조 & 알고리즘 (정렬)
정렬 요소들을 일정한 순서대로 열거하는 알고리즘 정렬의 특징 ▶ 정렬 기준은 사용자가 정할 수 있다. ▶ 크게 비교식과 분산식 정렬로 나눌 수 있다. ▶ 대부분의 언어가 빌트인으로 제공해준다. ▶ 삽입, 선택, 버블, 머지, 힙, 퀵 정렬 등 다양한 정렬 방식이 존재한다. 비교식 정렬 버블정렬 서로 인접한 두 요소를 검사하여 정렬하는 알고리즘 0(n2)시간복잡도를 가진다. 선택 정렬 선택한 요소와 가장 우선순위가 높은 요소를 교환하는 정렬 알고리즘 0(n2) 시간복잡도를 가진다. 삽입 정렬 선택한 요소를 삽입 할 수 있는 위치를 찾아 삽입하는 방식의 정렬 알고리즘 0(n2)시간복잡도를 가진다. 분산식 정렬 분할 정복 문제를 작은 2개의 문제로 분리하고 더 이상 분리가 불가능 할 때 처리한 후 합치는 전략..
2023.07.19 -
자료구조 & 알고리즘 (트라이)
트라이 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조 트라이의 특징 ▶ 검색어 자동완성, 사전 찾기 등에 응용될 수 있다. ▶ 문자열을 탐색할 때 단순하게 비교하는 것보다 효율적으로 찾을 수 있다. ▶ L이 문자열의 길이일 때 탐색, 삽입은 0(L)만큼 걸린다 ▶ 대신 각 정점이 지식에 대한 링크를 전부 가지고 있기에 저장 공간을 더 많이 사용한다. Trie 생성하기 트라이 구조 ▶ 루트는 비어있다. ▶ 각 간선(링크)은 추가될 문자를 키로 가진다. ▶ 각정점은 이전 정점의 값 + 간선의 키를 값으로 가진다. ▶ 해시 테이블과 연결 리스트를 이용하여 구현할 수 있다. JavaScript에서 사용법 트라이 구성
2023.07.19 -
자료구조 & 알고리즘 (힙 - Heap)
힙 이진 트리 형태를 가지며 우선순위가 높은 요소가 먼저 나가기 위해 요소가 삽입, 삭제 될 때 바로 정렬되는 특징이 있다. 힙의 특징 ▶ 우선순위가 높은 요소가 먼저 나가는 특증을 가진다. ▶ 루트가 가장 큰값이 되는 최대 힙(Max Heap)과 루트가 가장 작은 값이 되는 최소 힙(Min Heap)이 있다. ▶ 아쉽게도 자바스크립트에선 직접 구현해서 사용해야 한다. Heap 요소 추가 알고리즘 ▶ 요소가 추가될 때는 트리의 가장 마지막에 정점에 위치한다. ▶ 추가 후 부모 정점보다 우선순위가 높다면 부모 정점과 순서를 바꾼다. ▶ 이 과정을 반복하면 결국 가장 우선순위가 높은 정점이 루트가 된다 ▶완전 이진 트리의 높이는 log N이기에 힙의 요소 추가 알고리즘은 0(log N)시간복잡도를 가진다 H..
2023.07.19