본문 바로가기
알고리즘/알고리즘풀면서...

JavaScript 팁

by 두둠칫 2022. 5. 11.

js로 알고리즘을 풀줄이야..

 

 

0. 풀기 전..

1) var, let, const

간단히

var : 변수재선언가능, function scope

let : 변수재선언불가능, immutable 가능

const : 변수재선언불가능, immutable 불가능

 

참조)

https://gist.github.com/LeoHeo/7c2a2a6dbcf80becaaa1e61e90091e5d

 

javascript var, let, const 차이점

javascript var, let, const 차이점. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

2) 입력

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

let input = [];
rl.on('line', function(line) {
    input.push(line.split(' '));
}).on("close", function() {
    // Solution
    process.exit();
});

참조)

 

[JS] 알고리즘 문제 풀이를 위한 node.js에서 입력받기

woong-jae의 기술 블로그

woong-jae.com

 

3) 화살표 함수

// 기본
let tmp = function(args..) { expression };

// no arg
let tmp = () => { expression };

// 1 arg, 1 line expresssion
let tmp = arg => expression;

// ..

 

 

1. map 함수

 

배열.map((요소, 인덱스, 배열) => { return 로직결과 });

 

2. reduce 함수

 

배열.reduce((누적값, 현재값, 인덱스, 요소) => { return 결과 }, 초기값);

// 한줄압축
var dic = completion.reduce((obj, t)=> (obj[t]= obj[t] ? obj[t]+1 : 1 , obj) , {});

// 해석
var dic = completion.reduce( // reduce함수
        (obj, t) // 누적값, 현재값
        =>
        {
        obj[t]= obj[t] ? obj[t]+1 : 1 // 누적값[현재값] > 0 ? 누적값[현재값]++ : 누적값[현재값] = 1
        , obj 
        } // , 연산자를 통해 계산 결과 후의 obj가 반환됨
        , {}); // 초기값으로 {} 부여(비구조화 할당)
        
// 즉, completion 요소값으로 Map을 만들어 중복카운팅하는 표현식

 

 

3. Stack/Queue

var arr = [1, 2, 3];

//배열의 첫번째 원소 제거
var head = arr.shift();          

//배열의 맨 앞에 1 추가.
arr.unshift(1);

//배열의 맨 뒤에 2 추가.
arr.push(2);

//배열의 마지막 원소 제거
vat tail = arr.pop();

 

 

4. Map

// 1
let key = new Map();

for(let i = 0; i < arr.length(); i++){
	if(key.has(arr[i])){
    	key.set(arr[i], key.get(arr[i])+1)
    }
    else{
    	key.set(clothes[i], 1)
    }
}


// 2
arr.reduce((obj, t) => {
	obj[t] = obj[t] ? obj[t] + 1 : 1;
    return obj;
}, {});

 

5. every, some 함수

every : 배열의 모든 요소가 callBackFunction에서 모두 true여야, return true

some : 배열의 요소중 하나라도 callBackFunction에서 true이면, return true

var res = arr.every(func => {expression});
var res = arr.some(func => {expression});

 

6. splice

arr.splice(strat[, deletCount[, item[] ] ])

start : 배열 변경 시작 인덱스

delectCount : 시작인덱스부터 제거할 요소의 수, 생략하면 start부터 모든 요소 제거

item : 배열에 추가할 요소, 생략하면 splice는 제거하기만 함.

return : 제거한 요소를 담은 배열

var deletedArr = arr.splice(strtIdx, deleteCount, itemObejct);