본문 바로가기

전체 글375

leetcode - sort list / javascript leetcode의 sortlist 를 풀었다. 연결리스트를 정렬하는 문제이다. n log n으로 정렬해야 한다. 병합정렬이나 퀵 정렬이 n log n의 시간 복잡도를 가진다. 일반적인 프로그래밍 언어의 내장 sort 함수는 n log n의 복잡도를 가진다. 문제에서 n log n이 나오면 병합정렬, 퀵정렬을 떠올려야 한다. 아래 코드는 나의 답안이다. 처음에는 javascript 로 풀다가. 제출 후에 타입 에러가 자꾸 났다. 그래서 타입스크립트로 바꿨다. 로컬에서는 deno 를 써서 실행했다. function pushList(head: ListNode, arr: number[]): any { if (!head.next) { arr.push(head.val); return; } else { arr.pus.. 2020. 7. 25.
leetcode 알고리즘 - Intersection of Two Arrays II 두 배열에서 겹치는 부분을 찾아내는 문제다. Given two arrays, write a function to compute their intersection. Example 1: Input: nums1 = [1,2,2,1], nums2 = [2,2] Output: [2,2] Example 2: Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4] Output: [4,9] 답은 이렇다. /** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number[]} */ var intersect = function (nums1, nums2) { nums1.sort((a, b) => b - a); // 내림차 nums2.s.. 2020. 7. 20.
프로그래머스 고득점 kit - 정렬 - h-index / javascript 정렬 문제 3번째 h-index 를 풀었다. 이런 문제다. 답은 이렇다. function solution(citations) { citations = citations.sort((a, b) => b - a); // 정렬한다. if (citations[0] === 0) { return 0; } if (citations[citations.length - 1] >= citations.length) { return citations.length; } for (let index = 0; index = citations[index]) { return index; } } } 처음에는 반복문을 1부터 1000까지 돌고 그 안에서 count를 증.. 2020. 7. 20.
프로그래머스 - 코딩테스트 고득점 kit - 정렬 - 가장 큰 수 / javascript 프로그래머스 코딩테스트 고득점 kit 의 정렬 - 가장 큰 수를 풀었다. 답은 이렇다. function solution(numbers) { const arr = numbers.map((n) => n + '') // 문자열로 바꾸기 .sort((a, b) => (b + a) - (a + b)) // 조합한 숫자들을 내림차순으로 정렬 // a 가 뒤에있는 숫자, b가 앞에 있는 숫자 return arr[0] === '0' ? '0' : arr.join(''); // 배열의 모든 요소가 0인경우 처리 } // 배열에서 만들어 낼 수 있는 가장 큰 수 // [6,10,2] => 6210 const result = solution([9, 90, 534, 52, 910]); console.log(result); 답.. 2020. 7. 19.
javascript array sort / object array sort 아주 쉽게 배열 정렬하는법 -1 , 1 ,0 쓸 필요 없다. 오름차 [1,2,3,4,5,6].sort((a,b) => a-b) 내림차 [1,2,3,4,5].sort((a,b) => b-a) 2020. 6. 26.
npx cli - nest js 프로젝트 명령어 nestjs 모듈을 전역에 직접 설치했을때 파이썬 일부 모듈이나 다른 모듈이 안되는 문제가 있었다. npx 를 써서 하려고 했다. npx @nestjs/cli new npx @nestjs/cli generate controller npx @nestjs/cli generate module npx @nestjs/cli generate service 2020. 6. 25.
최근 공부 정리글 자바스크립트 자바스크립트의 가비지 컬렉터 동작 방식 mark-sweep 방식으로 동작한다. 전역 객체, 함수 같은 객체 셋을 root 로 놓고 root 로 부터 객체를 탐색한다. 탐색하면서 00 , 10, 11 (흰색, 회색, 검은색) 으로 플래그를 나눠서 객체를 마킹한다. 흰색은 아직 탐색하지 않은 것이다. 회색은 marking worklist 에 들어간 상태이다. 검은색은 객체의 필드를 모두 탐색한 상태이다. 이렇게 처리하는 과정은 회색 객체가 없을때까지 한다. 이후 흰색 객체는 모두 반환된다. 자바스크립트 가비지 컬렉터의 발전 과정 stop the world -> incremental -> parallel -> concurrent 형태로 발전해왔다. stop the world 는 GC 동작시 프로그.. 2020. 6. 19.
Nodejs 가비지 컬렉터 managed 언어에는 흔히 가비지 컬렉터가 있다. node js 의 가비지 컬렉터에 대해서 알아본다. 가비지 컬렉터는 사용되지 않는 메모리를 정리한다. GC 대상이 아닌것 객체가 포인터 체이닝을 통해서 접근 한 것 GC 대상인 것 그 외의 모든 것들은 garbage 이다. 이전의 알려진 가비지 컬렉터 - 사용되지 않는 객체를 찾고 지운다. GC 동작 시간동안 프로그램이 멈추는 stop the world 현상이 나타날 수 있다. node js 의 가비지 컬렉터는 기본적으로 mark - sweep 형태로 동작한다. mark - 동작 방식 - 루트에서 포인터를 사용해서 참조한다. 루트 객체 - 글로벌 객체나 현재 활성화되어 있는 함수 등의 알려진 살아있는 객체의 셋 객체당 2개의 마크비트(00, 10, 11.. 2020. 6. 14.
마이크로 서비스 아키텍처 12장 1. 비즈니스 개념에 따른 모델 - 바운디드 컨텍스트를 잘 나누고 개발한다. 2. 자동화 테스팅은 중요하다. - 빠른 피드백을 얻기 위해서 CI/CD 를 활용한다. - 어디에나 같은 방식으로 배포하기 위해서 같은 산출물(도커)를 활용한다. 3. 내부 구현 은폐 - REST 구조를 고려하라. - 서로 다른 MSA 가 다른 기술 스택으로 구현되어도 문제 없도록 만들어라 - DB도 분산해라 4. 팀을 조직에 맞춰서 조정하라. - 콘웨이의 법칙 5. 오케스트레이션보다는 코레오그래피를 지향하라. - 비동기적인 작업 처리 독립적인 배포 - 다른 서비스와 독립적으로 배포할 수 있도록 해라. - 블루/그린 배포나 카나리 배포를 고려하라. 소비자 주도 계약 테스트 - 소비자 입장에서 서비스는 ㅁㅁㅁ 해야 한다. 이런식의.. 2020. 6. 8.