자바스크립트 딥다이브를 공부하며 공부하는 내용이 지난 알고리즘 심화반에서 한 내용과 연관 지어 기록해 두기 ※ 배열여러 개의 값을 순차적으로 나열한 자료 구조요소(element): 배열이 가지고 있는 값으로, 자바스크립트의 모든 값은 배열의 요소가 될 수 있음인덱스(index): 요소가 배열에서 자신의 위치를 나타내는 0 이상의 정수로, 배열의 요소에 접근할 때 사용 ※ 일반적인 자료구조 배열밀집 배열자료구조에서 말하는 배열은 동일한 크기의 메모리 공간이 빈틈없이 연속적으로 나열된 자료구조 ※ 자바스크립트의 배열희소 배열배열의 요소가 연속적으로 이어져 있지 않는 배열 배열의 요소를 위한 각각의 메모리 공간은 동일한 크기를 갖지 않아도 되며, 연속적으로 이어져 있지 않을 수도 있음 따라서 엄밀히 일반적인 ..
알고리즘
지난 알고리즘 심화수업을 들은 이후 문제 풀이에만 집중하는 것 보다, 제한사항을 보고 시간복잡도를 먼저 생각한 뒤 알고리즘을 구현하려고 스스로 생각하고 있다. 해당 문제는 A와 B 배열을 가지고 (A최소값 x B최대값) + ... + (A 최대값 x B 최소값)이 될 수 있게 로직을 구현해야 함으로 최소 2번의 정렬과정을 거쳐야 한다. 그리고 계산된 값의 누적합을 구해야 함으로 reduce를 한 번 사용하였다. sort의 시간 복잡도는 nlog(n)이고, reduce는 log(n)이기에 최종적으로 코드의 시간 복잡도는 nlog(n)이 된다.
지난주 알고리즘 심화반 과제 중 하나였던 최댓값과 최솟값. Math.min()이 시간복잡도가 O(n^2)인 줄로 착각했어서 nlog(n)의 sort()로 풀었다... 튜터님의 설명과 함께 다시 한번 코드를 살펴볼 수 있어서 다행이었다. 평생 착각할 뻔또한 자바스크립트의 내장함수는 v8엔진 위에서 c++로 작동하기 때문에 일반적으로 자바스크립트에서 for문을 순회하는 등의 비슷한 작업과 비교하면 내장함수가 더 속도가 빠르다고 한다. 내장 함수에 어떤 로직이 쓰였나 생각해 본 적이 많지 않아 눈에 보이는 안전한 for문을 더 많이 애용했던 것 같은데 이 점도 신기했다.
1. 2024 스타트라인 내일배움캠프 X 신한카드 온라인 커리어 컨퍼런스인 2024 스타트라인(STARTLINE)에 참여하였다. 이것저것 개발자와 관련해서 웹서핑을 하다 발견했는데, 참가비가 5,000원 밖에 되지 않는데 선착순으로 굿즈와 배민 상품권도 주는 혜자스러운 컨퍼런스였다.(이게 창조경제..?) 다양한 직군에 따른 세션들이 마련되어 있었는데, 내가 희망하는 프론트엔드와 관련이 깊은 직군들이어서 더욱 열심히 들었다. 특히 첫 번째 세션인 이현호 님의 발표가 정말 흡입력 있어서 앞으로 있을 세션들에 대한 기대감이 커졌다. 특히나 많은 발표자분들께서 개발자의 역량 중 하나로 '내가 같이 일하고 싶은 사람'을 말씀해 주셨는데, 다행히 현재 진행 중인 내일배움캠프에서 몇 주가 멀다 하고 팀이 바뀌기..
풀이 1. forEach를 통해 배열을 순회하며 조건 만족하는 배열 생성function solution(arr, divisor) { let answer = []; arr.forEach((num) => { if(num % divisor === 0) answer.push(num); }) answer = answer.sort((a,b) => a - b); if(answer.length === 0) answer.push(-1); return answer;} 풀이 2. filter를 사용해 만족하는 조건 탐색function solution(arr, divisor) { let answer = arr.filter((num) => num % divisor === 0)..
배열에서 특정 값의 index를 얻기 위해서 indexOf를 가장 많이 사용하였는데, 특정 조건에 해당하는 index 값을 얻기 위해서 ES6에 추가된 findIndex라는 메서드를 알게 되었다. 이를 활용해서 간단한 알고리즘 문제를 풀어봤다.※ 프로그래머스 > 서울에서 김서방 찾기 seoul이라는 배열에서 "Kim"의 index를 찾아 반환하는 문제다. 1. IndexOf 사용function solution(seoul) { const index = seoul.indexOf("Kim") return "김서방은 " + index +"에 있다"} 2. findIndex 사용function solution(seoul) { const index = seoul.findIndex((element) ..