본문 바로가기
반응형

Programming/알고리즘10

이진 검색 - Binary Search 문제. 정수배열 arr과 정수 num을 입력받아 arr안에 num이 있다면 해당요소의 인덱스를 반환하고, 없으면 -1 반환 단, 정수배열 arr은 정렬이 되어있다. // 1. 정렬된 배열과 값을 입력 받는다. const binarySearch = (arr, num) => { // 2. 배열의 시작 부분에 왼쪽 포인터, 끝부분에 오른쪽 포인터 let left = 0; let right = arr.length - 1 while(left arr[median]){ // 3-2. 중간 포인터 값이 작으면 왼쪽 포인터를 올리고 left = median + 1 } else { // 3.3 중간 포인터 값이 크면 오른쪽 포인터를 내린다. right = median - 1 } } // 4. 값을 찾지 못하면 -1 반환 .. Programming/알고리즘 2023. 4. 2.
선형 검색 - LinearSearch 문제. 정수배열 arr과 정수 num을 입력 받아 arr안에 num이 있다면 해당 요소의 인덱스값을 반환하고 없으면 -1 반환 // 1. 배열과 값을 입력받는다. const linearSearch = (arr, num) => { // 2. 배열을 순회하면서 현재 배열 요소가 값과 같은지 확인 for(let i = 0; i < arr.length; i++){ // 3. 만약 같으면, 해당 요소가 발견된 인덱스를 반환 if(arr[i] === num) { return i; } // 4. 같은 값이 없으면 -1 반환 return -1; } } linearSearch([7,4,3,22,5,6,1,9], 3) // 2 Programming/알고리즘 2023. 4. 1.
문자열 검색 문제. 긴문자열과 짧은 문자열을 입력받고, 긴문자열 안에 짧은 문자열이 포함되어 있는 수를 반환하는 함수. // 1. 긴 문자열과 짧은 문자열을 받는 함수를 만든다. function naiveSearch(long, short){ let count = 0; // 2. 긴 문자열을 반복문으로 순회. for(let i = 0; i < long.length; i++){ // 3. 짧은 문자열을 반복문으로 순회 for(let j = 0; j < short.length; j++){ // 4. 만약 문자가 일치하지 않는다면 내부 반복문을 빠져나옵니다. if(short[j] !== long[i+j]) { break; } // 5. 만약 문자가 일치한다면 계속해서 반복문 진행 // 6. 내부 반목문을 완료하고 일치하는 .. Programming/알고리즘 2023. 3. 31.
재귀함수로 문자열 뒤집기 문자열을 입력받아 거꾸로 뒤집어 반환하는 함수 만들기 function reverse(str) { // 입력된 문자열이 빈 문자열인 경우 if (str === '') { return ''; } // 문자열의 첫 번째 문자와 나머지 문자열을 분리 const firstChar = str[0]; const restChars = str.slice(1); // 나머지 문자열을 거꾸로 뒤집은 결과와 첫 번째 문자를 연결하여 반환 return reverse(restChars) + firstChar; } console.log(reverse('hello') //olleh 1. function reverse(str) : 입력된 문자열을 거꾸로 뒤집어 반환하는 재귀 함수 reverse의 선언부입니다. str 매개변수는 입력된.. Programming/알고리즘 2023. 3. 26.
피보나치 수열 피보나치 수열은 첫 번째와 두 번째 항이 각각 0과 1이며, 그 이후의 항은 이전 두 항의 합으로 이루어지는 수열입니다. function fibonacci(n) { if (n Programming/알고리즘 2023. 3. 25.
반응형