반응형
알고리즘 문제 풀이시 자주 사용되는 테크닉
알고리즘 문제 해결시 자주 사용되는 테크닉들을 정리 ( 매우 주관적 )
배열이나 문자열에서 중복을 제거할 때
Set
자료형을 활용해 중복을 제거할 수 있다.
// 배열
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
메소드를 활용해 유니크한 값을 뽑아낼 수 있다.
const arr = [1,1,4,1,1]
arr.filter( el => arr.indexOf(el) === arr.lastIndexOf(el) ) // [4]
문자열에서도 마찬가지로 split
후 filter
를 사용하면 같은 결과를 얻을 수 있다.
const str = '11411'
str.split('').filter( el => str.indexOf(el) === str.lastIndexOf(el) ) // ['4']
배열로 결과값을 리턴하기 때문에
문자열을 원하면 toString()을 뒤에 붙여주면 되고,
넘버타입을 원하면 Number()로 감싸주면 된다.
배열이나 문자열에서 i 번째 인덱스 내용을 삭제하고 싶을 때
1. 원본을 보존하면서 잘라내는 방법
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. 원본을 훼손하며 잘라내는 방법
const 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 ( 조건 )
배열에 규칙적인 연속된 값 할당하기
알고리즘 풀때만 아니고 실제로 개발할때도 몇 번 쓴 것 같음.
Array(5).fill(1) // [1,1,1,1,1]
Array(5).fill(1).map( (el,i) => el+i ) // [1,2,3,4,5]
형변환 ( 문자 > 숫자, 숫자 > 문자 )
// 문자를 숫자로 변환
const str = '1234'
const strToNum = +str
console.log(strToNum) // 1234
// 숫자를 문자로 변환
const num = 1234
const numToStr = ''+num
console.log(numToStr) // '1234'
마무리
요즘 문제를 잘 안풀어서 추가가 안되고 있지만 이거라도..
개인적으로 공부한 내용을 정리한 것이기 때문에 반말을 사용한 점 양해 부탁드립니다.
잘못된 부분이나 피드백이 있으시다면, 댓글에 남겨주시면 감사하겠습니다!