JavaScript 알고리즘 테크닉

JavaScript logo

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

알고리즘 문제 해결시 자주 사용되는 테크닉들을 정리 ( 매우 주관적 )
문제를 풀면서 계속 업데이트 예정!

배열이나 문자열에서 중복을 제거할 때

Set이라는 자료형을 활용해 중복을 제거할 수 있다.

1
2
3
4
5
6
7
8
9
// 배열
const arr = [1,3,2,4,3,1,5,6,2,1];
const newArr = [...new Set(arr)];
console.log(newArr); // [1,3,2,4,5,6] 중복이 제거된 배열을 얻을 수 있다.

// 문자열
const str = "abcdacbe";
const newStr = [...new Set(str)].join('');
console.log(newStr); // "abcde" 중복이 제거된 문자열을 얻을 수 있다.

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

filter 메소드를 활용해 유니크한 값을 뽑아낼 수 있다.

1
2
const arr = [1,1,4,1,1]
arr.filter( el => arr.indexOf(el) === arr.lastIndexOf(el) ) // [4]

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

1
2
const str = '11411'
str.split('').filter( el => str.indexOf(el) === str.lastIndexOf(el) ) // ['4']

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

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

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

1
2
3
4
5
const arr = [1,2,3,4,5];
const newArr1 = [...arr.slice(0,2), ...arr.slice(3)]; // 2번 인덱스 삭제

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

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

1
2
3
const arr = [1,2,3,4,5];
arr.splice(2,1); // 2번 인덱스부터 1개를 삭제하겠다는 의미
console.log(arr); // [1,2,4,5]

true, false로 결과를 리턴 할 때

1
2
3
4
5
if ( 조건 ) {
return true
} else {
return false
}

대신에

1
return ( 조건 )

배열에 규칙적인 연속된 값 할당하기

알고리즘 풀때만 아니고 실제로 개발할때도 자주 쓴 것 같음.

1
2
Array(5).fill(1) // [1,1,1,1,1]
Array(5).fill(1).map( (el,i) => el+i ) // [1,2,3,4,5]

형변환 ( 문자 > 숫자, 숫자 > 문자 )

1
2
3
4
5
6
7
8
9
// 문자를 숫자로 변환
const str = '1234'
const strToNum = +str
console.log(strToNum) // 1234

// 숫자를 문자로 변환
const num = 1234
const numToStr = ''+num
console.log(numToStr) // '1234'

마무리

요즘 문제를 잘 안풀어서 추가가 안되고 있지만 이거라도..

개인적으로 공부한 내용을 정리한 것이기 때문에 반말을 사용한 점 양해 부탁드립니다.
잘못된 부분이나 피드백이 있으시다면, 댓글에 남겨주시면 감사하겠습니다!

공유하기