알고리즘 문제 풀이시 자주 사용되는 테크닉

문제풀다가 자꾸 검색하게 되는 내용들을 정리

알고리즘 문제 풀이시 자주 사용되는 테크닉

문제를 풀면서 계속 업데이트 예정!

배열이나 문자열에서 유니크한 원소 뽑아내기

const arr = [1,1,4,1,1] 

arr.filter(a => { if ( arr.indexOf(a) === arr.lastIndexOf(a) ) return a }) // [4]

위와 같이 쓰면 배열에서 유니크한 값 4를 얻을 수 있다.

문자열에서도 마찬가지로 문자열을 split으로 쪼개 filter를 사용하면 같은 결과를 얻을 수 있다.

const str = '11411'
const arr = str.split('');

arr.filter(a => { if ( arr.indexOf(a) === arr.lastIndexOf(a) ) return a }) // ['4']

배열로 결과값을 리턴하기 때문에 문자열을 원하면 toString()을 뒤에 붙여주면 되고, 넘버타입을 원하면 Number()로 감싸주면 된다.

배열이나 문자열에서 i 번째 인덱스 내용을 삭제하고 싶을 때

원본을 보존하면서 잘라내는 방법

const arr = [1, 2, 3, 4, 5];
let result = [];

result = arr.slice(0,2).concat(arr.slice(3,arr.length)) // 2번 인덱스 삭제

console.log(result) // [1, 2 ,4, 5];
console.log(arr) // [1, 2, 3, 4, 5]

원본을 훼손하며 잘라내는 방법

let arr = [1, 2, 3, 4, 5];

arr.splice(2, 1) // 2번 인덱스부터 1개를 삭제하겠다는 의미

console.log(arr); // [1, 2, 4, 5]

true, false로 결과를 리턴 할 때

if ( 조건 ) {
    return true
} else {
    return false
}

대신에

return ( 조건 )

만 써줘도 된다

배열에서 같은 값을 가지는 원소의 개수가 주어졌을 때 해당 원소를 구하는 방법

원래는 항상 obj에 배열전체를 돌면서 카운팅을 해놓고 꺼내서 쓰는식으로 했는데 너무 안좋은 방법인걸 알고 찾아보니

```
arr.find( a => arr.filter( b => a === b))

  1. 주니어개발자 2019.11.08 23:55

    자바스크립트로 알고리즘을 공부하는 학생인데요, 주소를 찾을 수 없다고 뜨는데 바뀐 주소로 수정해주실 수 있을까요? ㅠㅠ

+ Recent posts