diff --git a/juhee067/[week1]Array/array_length.js b/juhee067/[week1]Array/array_length.js new file mode 100644 index 0000000..aa84042 --- /dev/null +++ b/juhee067/[week1]Array/array_length.js @@ -0,0 +1,6 @@ +// 문자열 배열 strlist가 매개변수로 주어집니다. +// strlist 각 원소의 길이를 담은 배열을 return하도록 solution 함수를 완성해주세요. + +function solution(strlist) { + return strlist.map((v) => v.length); +} diff --git a/juhee067/[week1]Array/divided_number_array.js b/juhee067/[week1]Array/divided_number_array.js new file mode 100644 index 0000000..e57fae5 --- /dev/null +++ b/juhee067/[week1]Array/divided_number_array.js @@ -0,0 +1,7 @@ +// array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. +// divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. + +function solution(arr, divisor) { + const result = arr.filter((a) => a % divisor === 0).sort((a, b) => a - b); + return result.length === 0 ? [-1] : result; +} diff --git a/juhee067/[week1]Array/number_of_duplicate.js b/juhee067/[week1]Array/number_of_duplicate.js new file mode 100644 index 0000000..21174da --- /dev/null +++ b/juhee067/[week1]Array/number_of_duplicate.js @@ -0,0 +1,6 @@ +// 정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, +// array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요. + +function solution(array, n) { + return array.filter((v) => v === n).length; +} diff --git a/juhee067/[week1]Array/procession_multiply.js b/juhee067/[week1]Array/procession_multiply.js new file mode 100644 index 0000000..69df523 --- /dev/null +++ b/juhee067/[week1]Array/procession_multiply.js @@ -0,0 +1,16 @@ +function solution(arr1, arr2) { + const row = arr1.length; + const col1 = arr1[0].length; + const col2 = arr2[0].length; + const answer = []; + const result = Array.from(Array(row), () => Array(col2).fill(0)); + + for (let i = 0; i < row; i++) { + for (let j = 0; j < col2; j++) { + for (let k = 0; k < col1; k++) { + result[i][j] += arr1[i][k] * arr2[k][j]; + } + } + } + return result; +} diff --git a/juhee067/[week1]Array/procession_sum.js b/juhee067/[week1]Array/procession_sum.js new file mode 100644 index 0000000..36a9b92 --- /dev/null +++ b/juhee067/[week1]Array/procession_sum.js @@ -0,0 +1,15 @@ +// 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. +// 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. +function solution(arr1, arr2) { + const arr = arr1.length; + const element = arr1[0].length; + const result = []; + for (let i = 0; i < arr; i++) { + const row = []; + for (let j = 0; j < element; j++) { + row.push(arr1[i][j] + arr2[i][j]); + } + result.push(row); + } + return result; +} diff --git a/juhee067/[week1]Array/remove_min_number.js b/juhee067/[week1]Array/remove_min_number.js new file mode 100644 index 0000000..0add36d --- /dev/null +++ b/juhee067/[week1]Array/remove_min_number.js @@ -0,0 +1,9 @@ +// 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. +// 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. +// 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. + +function solution(arr) { + if (arr.length <= 1) return [-1]; + const min = Math.min(...arr); + return arr.filter((v) => v !== min); +} diff --git a/juhee067/[week1]Array/rotate_array.js b/juhee067/[week1]Array/rotate_array.js new file mode 100644 index 0000000..539630e --- /dev/null +++ b/juhee067/[week1]Array/rotate_array.js @@ -0,0 +1,11 @@ +// 정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. +// 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요. + +function solution(numbers, direction) { + if (direction === 'right') { + numbers.unshift(numbers.pop()); + } else { + numbers.push(numbers.shift()); + } + return numbers; +} diff --git a/juhee067/[week1]Array/trim_array.js b/juhee067/[week1]Array/trim_array.js new file mode 100644 index 0000000..369f359 --- /dev/null +++ b/juhee067/[week1]Array/trim_array.js @@ -0,0 +1,6 @@ +// 정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, +// numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 +// 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요. +function solution(numbers, num1, num2) { + return numbers.slice(num1, num2 + 1); +} diff --git a/juhee067/[week2]Stack/des.md b/juhee067/[week2]Stack/des.md new file mode 100644 index 0000000..86e944f --- /dev/null +++ b/juhee067/[week2]Stack/des.md @@ -0,0 +1,23 @@ +### 스택의 의미 + +![alt text](image.png) +| 쌓아 올린다는 것을 의미 + +- 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있다. +- top으로 정한 곳을 통해서만 접근 가능 +- 자료를 삭제할 때도 top을 통해서만 가능 +- top을 통해 삽입하는 연산 **PUSH** +- top을 통해 삭제하는 연산 **POP** +- 시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭제 + +비어있는 스택에서 원소 추출 → stack underflow + +스택이 넘치는 경우 → stack overflow + +### 활용 예시 + +- 웹 브라우저 뒤로가기 +- 역순 문자열 만들기 +- 실행 취소 +- 후위 표기법 계산 +- 수식의 괄호 검사 : 연산자 우선순위 표현을 위한 괄호 검사 diff --git a/juhee067/[week2]Stack/flipping_string.js b/juhee067/[week2]Stack/flipping_string.js new file mode 100644 index 0000000..17fa8a5 --- /dev/null +++ b/juhee067/[week2]Stack/flipping_string.js @@ -0,0 +1,4 @@ +// 문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요. +function solution(my_string) { + return [...my_string].reverse().join(''); +} diff --git a/juhee067/[week2]Stack/image.png b/juhee067/[week2]Stack/image.png new file mode 100644 index 0000000..56df3a9 Binary files /dev/null and b/juhee067/[week2]Stack/image.png differ diff --git a/juhee067/[week2]Stack/string_calculation.js b/juhee067/[week2]Stack/string_calculation.js new file mode 100644 index 0000000..90b21b2 --- /dev/null +++ b/juhee067/[week2]Stack/string_calculation.js @@ -0,0 +1,8 @@ +// my_string은 "3 + 5"처럼 문자열로 된 수식입니다. +// 문자열 my_string이 매개변수로 주어질 때, +// 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요. + +function solution(my_string) { + const newArr = my_string.split(' ').join(''); + return eval(newArr); +}