프론트엔드 공부/자료구조 & 알고리즘
-
fibonacci 문제 아래와 같이 정의된 피보나치 수열 중 n번째 항의 수를 리턴해야 합니다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1입니다. 그 다음 2번째 피보나치 수부터는 바로 직전의 두 피보나치 수의 합으로 정의합니다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... 입력 인자 1 : n number 타입의 n (n은 0 이상의 정수) 출력 number 타입을 리턴해야합니다. 주의사항 재귀함수를 이용해 구현해야 합니다. 반복문(for, while) 사용은 금지됩니다. 함수 fibonacci가 반드시 재귀함수일 필요는 없습니다. 입출력 예시 let output = fibonacci(0); console.log(output); // --> 0 output = ..
아래와 같이 정의된 피보나치 수열 중 n번째 항의 수를 리턴해야 합니다.fibonacci 문제 아래와 같이 정의된 피보나치 수열 중 n번째 항의 수를 리턴해야 합니다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1입니다. 그 다음 2번째 피보나치 수부터는 바로 직전의 두 피보나치 수의 합으로 정의합니다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... 입력 인자 1 : n number 타입의 n (n은 0 이상의 정수) 출력 number 타입을 리턴해야합니다. 주의사항 재귀함수를 이용해 구현해야 합니다. 반복문(for, while) 사용은 금지됩니다. 함수 fibonacci가 반드시 재귀함수일 필요는 없습니다. 입출력 예시 let output = fibonacci(0); console.log(output); // --> 0 output = ..
2023.02.16 -
문제1. 다음 중 재귀 함수의 정의로 맞는 것을 고르세요. A.함수를 호출하는 함수 B.자기 자신을 호출하는 함수 C.함수를 인자로 받는 함수 D.함수를 리턴하는 함수 더보기 A.함수를 호출하는 함수 B.자기 자신을 호출하는 함수 C.함수를 인자로 받는 함수 D.함수를 리턴하는 함수 문제2. 다음 중 재귀 함수를 구현할 때, 재귀의 탈출 조건과 관련있는 것을 고르세요. A. camel case B. recursive case C. pascal case D. base case 더보기 A. camel case B. recursive case C. pascal case D. base case 재귀 함수는 자기 자신을 호출하는 방식으로 동작하므로, 재귀를 반복하다 보면 언젠가는 멈춰야 합니다. 이때, 멈출 조건..
[자료구조/알고리즘] 재귀 종합퀴즈문제1. 다음 중 재귀 함수의 정의로 맞는 것을 고르세요. A.함수를 호출하는 함수 B.자기 자신을 호출하는 함수 C.함수를 인자로 받는 함수 D.함수를 리턴하는 함수 더보기 A.함수를 호출하는 함수 B.자기 자신을 호출하는 함수 C.함수를 인자로 받는 함수 D.함수를 리턴하는 함수 문제2. 다음 중 재귀 함수를 구현할 때, 재귀의 탈출 조건과 관련있는 것을 고르세요. A. camel case B. recursive case C. pascal case D. base case 더보기 A. camel case B. recursive case C. pascal case D. base case 재귀 함수는 자기 자신을 호출하는 방식으로 동작하므로, 재귀를 반복하다 보면 언젠가는 멈춰야 합니다. 이때, 멈출 조건..
2023.02.14 -
largestProductOfThree 문제 정수를 요소로 갖는 배열을 입력받아 3개의 요소를 곱해 나올 수 있는 최대값을 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 임의의 배열 출력 number 타입을 리턴해야 합니다. 주의사항 입력으로 주어진 배열은 중첩되지 않은 1차원 배열입니다. 배열의 요소는 음수와 0을 포함하는 정수입니다. 배열의 길이는 3 이상입니다. 입출력 예시 let output = largestProductOfThree([2, 1, 3, 7]); console.log(output); // --> 42 (= 2 * 3 * 7) output = largestProductOfThree([-1, 2, -5, 7]); console.log(output); // -..
정수를 요소로 갖는 배열을 입력받아 3개의 요소를 곱해 나올 수 있는 최대값을 리턴해야 합니다.largestProductOfThree 문제 정수를 요소로 갖는 배열을 입력받아 3개의 요소를 곱해 나올 수 있는 최대값을 리턴해야 합니다. 입력 인자 1 : arr number 타입을 요소로 갖는 임의의 배열 출력 number 타입을 리턴해야 합니다. 주의사항 입력으로 주어진 배열은 중첩되지 않은 1차원 배열입니다. 배열의 요소는 음수와 0을 포함하는 정수입니다. 배열의 길이는 3 이상입니다. 입출력 예시 let output = largestProductOfThree([2, 1, 3, 7]); console.log(output); // --> 42 (= 2 * 3 * 7) output = largestProductOfThree([-1, 2, -5, 7]); console.log(output); // -..
2023.02.14 -
재귀 함수란? 재귀적으로 호출되는 함수가 반환 값을 이용해 문제를 분할하고, 작은 문제를 해결하여 최종적으로 전체 문제를 해결하는 방식입니다. 예시) recursion() 함수가 자기 자신을 호출하여 문제를 해결하는 재귀함수 function recursion () { console.log("This is") console.log("recursion!") recursion() } 재귀는 언제 사용하는 게 좋을까? 재귀함수는 다음과 같은 경우에 사용하는 것이 적합합니다. (예를 들어, 피보나치 수열, 이진 탐색, 하노이 탑, 트리 순회 등은 재귀함수를 이용해 간단하고 명확하게 구현할 수 있습니다.) 문제를 작은 부분으로 쪼개기 쉬운 경우 문제를 작은 부분으로 쪼개기 쉽다면, 재귀 함수를 이용하여 작은 부분에..
재귀함수재귀 함수란? 재귀적으로 호출되는 함수가 반환 값을 이용해 문제를 분할하고, 작은 문제를 해결하여 최종적으로 전체 문제를 해결하는 방식입니다. 예시) recursion() 함수가 자기 자신을 호출하여 문제를 해결하는 재귀함수 function recursion () { console.log("This is") console.log("recursion!") recursion() } 재귀는 언제 사용하는 게 좋을까? 재귀함수는 다음과 같은 경우에 사용하는 것이 적합합니다. (예를 들어, 피보나치 수열, 이진 탐색, 하노이 탑, 트리 순회 등은 재귀함수를 이용해 간단하고 명확하게 구현할 수 있습니다.) 문제를 작은 부분으로 쪼개기 쉬운 경우 문제를 작은 부분으로 쪼개기 쉽다면, 재귀 함수를 이용하여 작은 부분에..
2023.02.13 -
compressString 문제 문자열을 입력받아 연속되는 문자가 있을 경우, 연속 구간을 반복되는 수와 문자로 조합한 형태로 압축한 문자열을 리턴해야 합니다. 입력 인자 1 : str string 타입의 알파벳 문자열 출력 string 타입을 리턴해야 합니다. 주의 사항 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다. 3개 이상 연속되는 문자만 압축합니다. 입출력 예시 let output = compressString('abc'); console.log(output); // --> abc output = compressString('wwwggoppopppp'); console.log(output); // --> 3wggoppo4p 코드 // 작성코드 function compressString..
문자열을 입력받아 연속되는 문자가 있을 경우, 연속 구간을 반복되는 수와 문자로 조합한 형태로 압축한 문자열을 리턴해야 합니다.compressString 문제 문자열을 입력받아 연속되는 문자가 있을 경우, 연속 구간을 반복되는 수와 문자로 조합한 형태로 압축한 문자열을 리턴해야 합니다. 입력 인자 1 : str string 타입의 알파벳 문자열 출력 string 타입을 리턴해야 합니다. 주의 사항 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다. 3개 이상 연속되는 문자만 압축합니다. 입출력 예시 let output = compressString('abc'); console.log(output); // --> abc output = compressString('wwwggoppopppp'); console.log(output); // --> 3wggoppo4p 코드 // 작성코드 function compressString..
2023.02.10 -
decryptCaesarCipher 문제 암호화된 문자열과 암호화 키를 입력받아 복호화된 문자열을 리턴해야 합니다. 카이사르 암호(Caesar cipher)는 평문(plaintext)을 암호키 secret개만큼 (오른쪽으로) 평행이동시켜 암호화 합니다. 복호화는 암호화된 문자열을 원래의 평문으로 복원하는 것을 말합니다. 'hello'를 secret 3으로 암호화한 경우: 'khoor' 'codestates'를 secret 11로 암호화한 경우: 'nzopdelepd' 입력 인자 1 : str string 타입의 알파벳 소문자 문자열 인자 2 : secret number 타입의 암호화 키 출력 string 타입을 리턴해야 합니다. 주의 사항 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다. 공백은..
암호화된 문자열과 암호화 키를 입력받아 복호화된 문자열을 리턴해야 합니다.카이사르 암호(Caesar cipher)는 평문(plaintext)을 암호키 secret개만큼 (오른쪽으로) 평행이동시켜 암호화 합니다. 복..decryptCaesarCipher 문제 암호화된 문자열과 암호화 키를 입력받아 복호화된 문자열을 리턴해야 합니다. 카이사르 암호(Caesar cipher)는 평문(plaintext)을 암호키 secret개만큼 (오른쪽으로) 평행이동시켜 암호화 합니다. 복호화는 암호화된 문자열을 원래의 평문으로 복원하는 것을 말합니다. 'hello'를 secret 3으로 암호화한 경우: 'khoor' 'codestates'를 secret 11로 암호화한 경우: 'nzopdelepd' 입력 인자 1 : str string 타입의 알파벳 소문자 문자열 인자 2 : secret number 타입의 암호화 키 출력 string 타입을 리턴해야 합니다. 주의 사항 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다. 공백은..
2023.02.09 -
numberSearch 문제 문자열을 입력받아 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 (숫자와 공백을 제외한 나머지) 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴해야 합니다. 입력 인자 1 : str string 타입의 문자열 출력 number 타입을 리턴해야 합니다 (0 이상의 정수) 주의 사항 빈 문자열을 입력받은 경우, 0을 리턴해야 합니다. 숫자(digit)는 연속해서 등장하지 않습니다. 입출력 예시 let output = numberSearch('Hello6 '); console.log(output); // --> 1 output = numberSearch('Hello6 9World 2,'); console.log(output); // --> 2 output = numberSea..
문자열을 입력받아 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 (숫자와 공백을 제외한 나머지) 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴해야 합니다.numberSearch 문제 문자열을 입력받아 문자열에서 숫자를 모두 찾아 더한 뒤에 해당 값을 (숫자와 공백을 제외한 나머지) 문자열의 길이로 나눈 값을 정수로 반올림하여 리턴해야 합니다. 입력 인자 1 : str string 타입의 문자열 출력 number 타입을 리턴해야 합니다 (0 이상의 정수) 주의 사항 빈 문자열을 입력받은 경우, 0을 리턴해야 합니다. 숫자(digit)는 연속해서 등장하지 않습니다. 입출력 예시 let output = numberSearch('Hello6 '); console.log(output); // --> 1 output = numberSearch('Hello6 9World 2,'); console.log(output); // --> 2 output = numberSea..
2023.02.08 -
computeSquareRoot 문제 수를 입력받아 제곱근 값을 소수점 두 자리까지 리턴해야 합니다. 입력 인자 1 : num number 타입의 정수 (num >= 2) 출력 number 타입을 리턴해야 합니다. 최대 소수점 둘째 짜리까지 구합니다. (소수점 셋째 자리에서 반올림) 주의 사항 Math.sqrt 사용은 금지됩니다. 입출력 예시 let output = computeSquareRoot(9); console.log(output); // --> 3 output = computeSquareRoot(6); console.log(output); // --> 2.45 힌트 소수점 처리는 javascript 표준 내장 객체인 Number를 검색해 봅니다. (js decimal places limit 또는..
수를 입력받아 제곱근 값을 소수점 두 자리까지 리턴해야 합니다.computeSquareRoot 문제 수를 입력받아 제곱근 값을 소수점 두 자리까지 리턴해야 합니다. 입력 인자 1 : num number 타입의 정수 (num >= 2) 출력 number 타입을 리턴해야 합니다. 최대 소수점 둘째 짜리까지 구합니다. (소수점 셋째 자리에서 반올림) 주의 사항 Math.sqrt 사용은 금지됩니다. 입출력 예시 let output = computeSquareRoot(9); console.log(output); // --> 3 output = computeSquareRoot(6); console.log(output); // --> 2.45 힌트 소수점 처리는 javascript 표준 내장 객체인 Number를 검색해 봅니다. (js decimal places limit 또는..
2023.02.07