항해99 Week_12 WIL

그루트·2021년 12월 5일
0

항해 WIL (Week I learned)

목록 보기
12/14

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

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

알고리즘 문제 해결시 자주 사용되는 테크닉들을 정리 ( 매우 주관적 )

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

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]

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

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'

마무리

이번주는 프로젝트 마지막 주인 만큼 주로 실제로 고객들에게 피드백을 받고 수정하고 생기던 오류들을 잡아 마무리하고 선보이는 주였다.
프로젝트를 더 좋게 만들수도 있었는데 못했던게 많이 아쉽고 내가 좀 더 노력해서 더 좋은 결과물을 나오게 했어야 했을것 같은 생각을 많이 하게 되고 다시 나 자신을 돌아보게됬다.
프로젝트를 해도 실직적으로 내가 다 작성한것은 아니기에 다음주 부터 시작하는 알고리즘 주차에서도 프로젝트를 따로 진행하면서 알고리즘을 공부할까한다.
같은 조로 했던 동료가 마침 흔쾌히 수락해셔서 지금 살고있는 집 방하나를 드리고 합숙하면서 프로젝트를 진행하고 알고리즘도 짜볼까한다. 주말은 대체로 끝난 프로젝트를 다시 보고 생각해보고 적용하지 않아서 아쉬웠던걸들을 찾아 보고 어떻게 사용하는지 공부했고 다른 조는 어떻게 했는지 좋은것이 있다면 언제라도 다시 사용할수 있겠끔 찾아보았다.
전에 c언어를 공부하면서 알고리즘 문제를 정말 조금 보긴했는데 아무래도 지금 지향하는 쪽이 프론트 엔트 영역이다보니 javascript를 이용해서 알고리즘을 짜는게 좋을꺼 같아 javascript로 풀기로했다.
찾아보면서 느낀건데 c언어로 풀땐 매우 직관적으로 입력값을 받아 나타낼수있었는데 javascript는 해야하는 매우 복잡한거 같았다. 따라 찾아보면서 익히고 있고 있다.
내일 조가 배정 될꺼같은데 동료들과 이야기하고 차근차근 공부해 나가야겠다.

profile
i'm groot

0개의 댓글