문제 링크 [방법] 배열의 원소들을 순회하면서 가장 큰 자릿수를 구한다. 각 배열의 원소를 해당 크기의 자릿수만큼 늘리고, 자릿수가 변경되면서 생긴 자릿수 값은 해당 원소의 원본 값에서 가장 큰 자릿수의 값으로 할당한다. 예를 들어, 원소 41이 있고 가장 큰 자릿수가 3이라면 41을 414로 변경한다. 새로운 배열에 대해 내림차순으로 정렬하고, 같은 값을 가질 경우 원본 값에서 1의 자릿수 값을 비교하여 결정한다. 정렬된 배열의 원본 값을 순서대로 이어붙이면서 결과 값을 완성한다. [테스트 케이스] 41과 414가 주어졌을 때, 41441이 나와야 한다. 89와 898이 주어졌을 때, 89898이 나와야 한다. [소스코드] function solution(numbers) { let answer = ''..
재귀 없는 퀵정렬을 JS와 C++로 구현하면서 수행속도를 측정하고자 하였다. C++은 정수형 타입이더라도 1바이트, 2바이트, 4바이트, 8바이트로 개발자가 선택하여 사용해야 하는 반면, JS는 정수형과 실수형 타입 모두 number로 사용되고 있다. 다만, JS의 경우 ArrayBuffer를 통해 원하는 바이트 크기의 버퍼를 생성할 수 있고, Int32Array() 함수로 해당 버퍼를 래핑하여 배열 원소의 크기를 4바이트로 사용할 수 있다. [기본 배열 사용시] JS에서 1억개 할당 시 기본 배열은 최대 6.8GB의 메모리 공간을 차지하였다. 정렬 시 시간은 13.452초 소요되었다. 메모리 할당 시간은 36.656초 소요되었다. [고정 크기 배열 사용시] JS에서 1억개 할당 시 고정 크기 배열은 4..
실험환경 값의 범위 : 0~1억 데이터 개수 : 천만개 ~ 3천만개 반복횟수 : 3회 Note : 합병정렬은 기본 배열의 두배 크기로 메모리 공간을 사용합니다. 실험결과 1000만 1500만 2000만 2500만 3000만 기본정렬 4.16초 6.845초 9.142초 11.421초 14.021초 합병정렬 2.632초 3.881초 5.225초 6.589초 8.358초 퀵정렬 2.129초 3.172초 4.261초 5.487초 6.557초 /** INFO: 파라미터 만큼 배열을 생성하고 랜덤값 입력 */ function generateRandomArray(numData){ let arr = new Array(numData).fill(0); for(let i=0;i= high){ //INFO: 한개밖에 없으면 ..
[개발환경] 운영체제 : Windows 10 Pro Node.js 버전 : V12.14.0 CPU : AMD Ryzen 7 1700 8-core Processor app.js const path = require('path'); const envInfo = require('./env_info.json'); const { Worker } = require('worker_threads'); let workerPath = path.join(__dirname, './worker.js'); let resultArr = new Array(envInfo.numThreads + 1); if (envInfo.useThread) { for (let i = 0; i < envInfo.numThreads; i++) { let..
[개발환경] Node.js 버전: 12.14.0 VS Code 버전: 1.47.2 타입스크립트 버전: 3.9.5 [사전조건] 타입스크립트가 글로벌 모드로 설치되어 있어야 한다. npm install -g typescript [작업순서] 타입스크립트 프로젝트를 위한 폴더를 생성한다. (예시: tsc_deb_001) npm init -y tsc -init tsconfig.json에서 다음 항목을 수정한다. (sourceRoot는 주석처리) { "compilerOptions":{ "target": "ES2019", "sourceMap": true, "rootDir": "./" } } 루트 폴더에 app.ts 파일을 생성한다. 그리고 다음과 같이 작성한다. function add(a: number, b: num..
undefined 타입 undefined ⇒ false object 타입 null ⇒ false {} ⇒ true string 타입 '' ⇒ false (문자열 값이 하나라도 없으면 false) 'a' ⇒ true (문자열 값이 하나라도 있으면 true) number 타입 0 ⇒ false 1 ⇒ true -1 ⇒ true NaN ⇒ false (0과 같지 않음) boolean 타입 true ⇒ true false ⇒ false 특이사항 null 값을 가진 변수의 타입을 조회해보면 항상 object 타입임. 이에 따라, null은 object 타입에서만 사용된다고 볼 수 있음