개발

    [알고리즘] 연속된 수를 더해서 가장 큰 값 찾기

    문제 배열안에 있는 요소중 연속된 num개 만큼 뽑아 더한다. 더한값중 가장 큰값을 찾는 함수만들기 예시 : maxSubarraySum([2, 6, 9, 2, 1, 8, 5, 6, 3], 3); 풀이 (1) 1번 풀이 function maxSubarraySum(arr, num) { if (num > arr.length) { return null; } var max = -Infinity; for (let i = 0; i max) { max = temp; } } return max; } 시간 복잡도 : O(n^2) (2)..

    [BlockChain] TypeScript로 블록 만들기

    1. TypeScript로 블록만들기 (1) OOP(Object Oriented Programming) OOP는 객체지향적인 방법으로 코드를 작성하는 프로그램의 설계 방법론중 하나다. 수많은 객체 단위를 만들어 서로 상호작용하며 동작하는 방식이다. OOP에서 객체는 하나의 역할을 수행하는 함수와 변수들의 묶음 데이터로 보면 된다. 이러한 객체지향 프로그래밍은 프로그램을 만들때 제일 작은 단위부터 만들어가는 방식을 선호한다. 하지만 작은 단위부터 작성하면 테스트가 어렵다는 단점이 있고 이를 극복하기 위해 TDD를 사용한다. (2) TDD(Test Driven Development) 작은 단위들을 테스트 해보며 개발하기 위해 사용하는 기법이다. TDD기법으로 하기 위해 Jest,babel 라이브러리를 사용한..

    [알고리즘] 배열에 중복되지 않는 요소 개수 찾기

    문제 배열에 중복되지 않는 요소들의 개수를 찾는다. 조건 : 시간복잡도 O(n), 공간복잡도 O(n) 예시 countUniqueValues([1, 1, 1, 1, 1, 2]); // 2 countUniqueValues([1, 2, 3, 4, 4, 4, 7, 7, 12, 12, 13]); // 7 countUniqueValues([]); // 0 countUniqueValues([-2, -1, -1, 0, 1]); // 4 풀이 function countUniqueValues(arr) { let i = 0; for (let j = 1; j < arr.length; j++) { if (arr[i] !== arr[j]) { i++; arr[i] = arr[j]; } } return i + 1; }

    [알고리즘] 다중 포인터

    문제 배열에 연속한 둘을 더해 0이 되는값이 있다면 그 두값을 return하는 함수를 만든다. 배열의 요소들은 오름차순으로 정렬되어있다. 예시 sumZero([-4, -3, -2, -1, 0, 1, 2, 5]); 풀이 (1) 1번풀이 function sumZero(arr) { for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { if (arr[i] + arr[j] === 0) { return [arr[i], arr[j]]; } } } } 2중 for문을 돌려 시간복잡도가 O(n^2)이다. (2) 2번풀이 function sumZero(arr) { let left = 0; let right = arr.length ..

    [알고리즘] anagram

    애너그램은 단어나 문장을 구성하고 있는 문자의 순서를 바꾸어 다른 단어나 문장을 만드는 것이다. 문제 두개의 문자열이 주어진다. 두 문자열의 요소는 같지만 순서만 뒤바껴있는지 확인하는 함수를 만든다.조건 : 시간복잡도 O(n) 예시 : validAnagram("", ""); // true validAnagram("aaz", "zza"); // false validAnagram("anagram", "nagaram"); // true validAnagram("rat", "car"); // false) // false validAnagram("awesome", "awesom"); // false validAnagram("amanaplanacanalpanama", "acanalmanplanpamana"); //..

    [알고리즘] 배열 안의 요소 비교

    문제 A와 B 배열이 있는데 B배열안의 요소들이 A배열 요소들의 제곱값인지 판별하는 함수를 만들어야한다. 예를 들면 same([1,2,3,2,5], [9,1,4,4,11]) // false same([1, 2, 3, 2], [9, 1, 4, 4]) // true (1) 1번 풀이 function same(arr1, arr2) { if (arr1.length !== arr2.length) { return false; } for (let i = 0; i < arr1.length; i++) { let correctIndex = arr2.indexOf(arr1[i] ** 2); if (correctIndex === -1) { return false; } arr2.splice(correctIndex, 1); } ..