탐색 알고리즘 DFS / BFS 개념
탐색 알고리즘을 배우기 전에 스택과 큐에 대해서 알아야한다. 더보기 스택 스택(stack)은 컵이다. 컵에 섞이지 않는 액체 a,b,c,d를 넣는 것과 같다. 아래의 예제를 보면, 차례대로 A,B,C,D,E가 들어갔으면 차례대로 E,D,C,B,A가 되어야한다. 즉 제일 마지막에 들어간 것이 제일 첫번째로 나오는 구조이다. 이걸 영어로 하면 Last In First Out 이 되는데, 앞의 글자만 따와 LIFO가 된다. 큐 큐(queue)는 파이프이다. 예를 들어 파이프 안에 A,B,C,D를 넣는다면, 반대쪽 출구에선 A,B,C,D순으로 받을 것이다. 전깃줄에 빗대보자. 전력소에서 A전기를 넣고 B전기를 넣었다면 가정집에선 A전기를 먼저 받고 B전기를 받는다. Why? 탐색 알고리즘을 왜 쓰느냐? 보통 컴..
2022. 8. 3.
[항해99][프로그래머스] 내적 in Javascript
문제 설명 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) 제한사항 a, b의 길이는 1 이상 1,000 이하입니다. a, b의 모든 수는 -1,000 이상 1,000 이하입니다. 입출력 예 a b result [1,2,3,4] [-3,-1,0,2] 3 [-1,0,1] [1,0,-1] -2 입출력 예 설명 입출력 예 #1 a와 b의 내적은 1*(-3) + 2*(-1) + 3*0 + 4*2 = 3 입니다. 입출력 예 #2 a와 b의 내적은 (-1)*1 + 0*0 + 1*(-1)..
2022. 7. 16.
[항해99][프로그래머스] 나누어 떨어지는 숫자 배열 in Javascript
문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. 입출력 예 arr divisor return [5, 9, 7, 10] 5 [5, 10] [2, 36, 1, 3] 1 [1, 2, 3, 36] [3,2,6] 10 [-1] 입출력 예 설명 입출력 예#1 arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라..
2022. 7. 16.
map()함수 - 각 요소마다 적용 in javascript
map()함수는 python에서 쓰는 map함수의 쓰임새가 같다. 그러나 동작하는 방법은 다른데 javascript의 reduce함수와 유사하다. map()함수는 배열안에 각 요소에게 기능을 적용할 때 쓰인다. 아주 간단한 예를 들면, 배열 요소안에 각각 *2를 하고 싶으면 map을 쓰면 된다. 보통 for을 써서 요소하나하나씩을 꺼내 2를 곱하는데 이것을 대신해주는 함수가 map()함수이다. let numbers = [ 1,2,3,4,5,6,7,8,9]; let newNumbers = numbers.map(number =>number *2); 결과 값으로 newNumbers=[2,4,6,8,10,12,14,16,18]이 나온다. 이 뿐 아니라 배열 안에 요소들의 인덱스값도 꺼내올 수 있다. 밑의 정리 ..
2022. 7. 15.
[항해99][프로그래머스] 행렬의 덧셈 in Javascript
문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 입출력 예 arr1 arr2 return [[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]] [[1],[2]] [[3],[4]] [[4],[6]] 내가 푼 풀이 function solution(arr1, arr2) { return arr1.map((row,i) => arr2[i].map((col,j) => arr1[i][j]+arr2[i][j])) } 우선 행렬의 덧셈이고 같은 크..
2022. 7. 15.