Node.js 중복 제거 (기본)
어레이 중복 제거
function qc ( arr1) {
let arr = [ ] ;
for ( let i = 0 ; i < arr1. length; i++ ) {
if ( arr. indexOf ( arr1[ i] ) == - 1 ) {
arr. push ( arr1[ i] )
}
}
return arr;
}
arr1 = [ "1" , "1" , "3" , "5" , "2" , "24" , "4" , "4" , "a" , "a" , "b" ] ;
console. log ( qc ( arr1) ) ;
버블 정렬
function sort ( elements) {
for ( var i= 0 ; i< elements. length - 1 ; i++ ) {
for ( var j= 0 ; j< elements. length- i- 1 ; j++ ) {
if ( elements[ j] > elements[ j+ 1 ] ) {
var swap = elements[ j] ;
elements[ j] = elements[ j+ 1 ] ;
elements[ j+ 1 ] = swap;
}
}
}
return elements;
}
var elements = [ 3 , 1 , 5 , 9 , 6 ] ;
console. log ( sort ( elements) ) ;
빠른 정렬
var quicksort = function ( arr) {
if ( arr. length<= 1 ) {
return arr;
}
var midIndex= Math. floor ( arr. length/ 2 ) ;
var midIndexVal= arr. splice ( midIndex, 1 ) ;
var left= [ ] ;
var right= [ ] ;
for ( var i= 0 ; i< arr. length; i++ ) {
if ( arr[ i] < midIndexVal) {
left. push ( arr[ i] ) ;
} else {
right. push ( arr[ i] ) ;
}
}
return quicksort ( left) . concat ( midIndexVal, quicksort ( right) ) ;
}
var b = [ 1 , 6 , 2 , 8 , 4 , 3 , 70 , 50 , 30 ]
console. log ( quicksort ( b) ) ;
재귀
function jiecheng ( num) {
if ( num == 1 ) {
return 1 ;
}
return num* jiecheng ( num- 1 ) ;
}
console. log ( jiecheng ( 5 ) )
function fei ( num) {
if ( num== 0 || num== 1 ) {
return 1 ;
}
return fei ( num- 1 ) + fei ( num- 2 ) ;
}
console. log ( fei ( 5 ) )
고급 알고리즘 (흥미로운)
배열 출력 A [i] * i
function accum ( str) {
let result = [ ]
for ( let i= 0 ; i< str. length; i++ ) {
let Letter = str. charAt ( i)
let temp = ''
for ( let j= 0 ; j< i; j++ ) {
emp += Letter. toLowerCase ( )
}
result. push ( Letter. toUpperCase ( ) + temp)
}
return result. join ( '-' )
}
이진수로 1의 수 찾기
function bit_count ( n) {
let c = 0 ;
do {
c+= n& 1
} while ( n >>= 1 )
return c
}
var a= 1234 ;
console. log ( a. toString ( 2 ) ) ;
console. log ( bit_count ( a) ) ;
최대 및 최소값을 빠르게 찾기
var highandlow = function ( arr) {
var str = arr. join ( ) ;
var max = eval ( 'Math.max(' + str+ ')' ) ;
var min = eval ( 'Math.min(' + str+ ')' ) ;
console. log ( "最大值:" + max+ '\n' + "最小值:" + min+ "" )
}
var mm= [ 10 , 20 , 50 , 100 , 500 , 20 ] ;
highandlow ( mm) ;
누산기 감소
function sum ( A ) {
return A . reduce ( ( x, y) => x+ y, 0 )
}
var A = [ 1 , 2 , 3 , 4 , 5 ]
console. log ( sum ( A ) )
빠른 역방향
function reverse ( arr) {
let num= parseInt ( arr. length/ 2 ) ;
for ( var i= 0 ; i< num; i++ ) {
let temp = arr[ i] ;
arr[ i] = arr[ arr. length- i- 1 ] ;
arr[ arr. length- i- 1 ] = temp;
}
return arr;
}
var A = [ 1 , 10 , 5 , 13 , 26 , 50 , 2 ] ;
console. log ( reverse ( A ) )
어레이 회전
rotate ( A , 1 )
rotate ( A , 2 )
rotate ( A , 3 )
function rotate ( A , amount) {
return ( A . slice ( - amount) ) . concat ( A . slice ( 0 , - amount) )
}
var A = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ;
console. log ( rotate ( A , 5 ) )
이진 검색
function bsearch ( A , x) {
let l = 0 ,
r = A . length - 1 ,
guess
while ( l <= r) {
guess = Math. floor ( ( l+ r) / 2 )
if ( A [ guess] === x) return guess
else if ( A [ guess] > x) r = guess - 1
else l = guess + 1
}
return - 1
}
const A = [ 1 , 3 , 5 , 21 , 32 , 34 , 60 ]
console. log ( bsearch ( A , 88 ) )
console. log ( bsearch ( A , 33 ) )
console. log ( bsearch ( A , 32 ) )
고차 기능 수신
function _add ( a, b, c, d) {
return a + b + c + d
}
const add = curry ( add)
console. log ( add ( 1 ) )
console. log ( add ( 1 ) ( 2 ) )
console. log ( add ( 1 ) ( 2 ) ( 3 ) )
console. log ( add ( 1 ) ( 2 ) ( 3 ) ( 4 ) )
function _add ( a, b, c) {
return a + b + c
}
const curry = func => {
const g = ( ... allArgs) => {
return allArgs. length >= func. length ?
func ( ... allArgs) : ( ... args) => g ( ... allArgs, ... args)
}
return g
}
const add = curry ( _add)
console. log ( add ( 1 ) )
console. log ( add ( 1 ) ( 2 ) )
console. log ( add ( 1 ) ( 2 ) ( 3 ) )
버블 정렬 (고급)
function swap ( A , i , j) {
let a = A [ i] ;
A [ i] = A [ j] ;
A [ j] = a;
} ;
function bubble_sort ( A ) {
for ( let i = A . length- 1 ; i >= 1 ; i-- ) {
for ( j = 0 ; j <= i; j++ ) {
A [ j- 1 ] > A [ j] && swap ( A , j- 1 , j)
}
}
}
const A = [ 16 , 5 , 2 , 3 , 4 , 9 , 10 ]
bubble_sort ( A )
console. log ( A )
처음 3 자 및 마지막 4 자 유지 (휴대 전화 번호 * 형식)
function maskify3 ( cc) {
return cc. slice ( 0 , 3 ) + cc. slice ( 4 , 8 ) . replace ( /./g , '*' ) + cc. slice ( - 4 )
}
console. log ( maskify3 ( '12345678911' ) )