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);
'알고리즘 > 알고리즘풀면서...' 카테고리의 다른 글
JAVA 팁(2) (0) | 2022.05.11 |
---|---|
문자열 알고리즘관련 (0) | 2022.05.08 |
다시 풀어볼만한 문제 모음 (1) | 2021.10.03 |
최단경로 알고리즘 정리 : 다익스트라, 벨만포드, 플로이드-와샬 (0) | 2021.08.29 |
C/C++ 팁 (0) | 2020.11.04 |