본문 바로가기

Algorithm26

[Algorithm 014] JS - factorial Q. 재귀를 사용하여 팩토리얼(factorial)을 구하는 함수를 구현해주세요. 팩토리얼이란 1에서부터 n까지의 정수를 모두 곱한것을 말합니다. 1! = 1 2! = 1 * 2 5! = 1 * 2 * 3 * 4 * 5 A. 답 const factorial = n => { if( n === 0 ){ return 1; } return n * factorial(n-1); } factorial(3) // 6 if 를 적지 않았다가 RunJS가 뻗어버렸다. 재귀함수는 자신을 계속 호출하므로 이를 중단시키는 특정 조건문이 반드시 하나 이상 들어가야한다. 이것을 Base case(=Termination case)라고 한다. 마지막에 1을 반환하는 이유 : 종료 값을 반환할 때 값에 지장을 주지 않기 위해 1을 곱한다.. 2021. 10. 9.
[Algorithm 013] JS - complexNumberMultiply Q. 두 개의 input에 복소수(complex number)가 string 으로 주어집니다. 복소수란 a+bi 의 형태로, 실수와 허수로 이루어진 수입니다. input으로 받은 두 수를 곱해서 반환해주세요. 반환하는 표현도 복소수 형태의 string 이어야 합니다. 복소수 정의에 의하면 (i^2)는 -1 이므로 (i^2) 일때는 -1로 계산해주세요. (제곱 표현이 안 되어 i의 2제곱을 (i^2)라고 표현했습니다.) input은 항상 a+bi 형태입니다. output도 a+bi 형태로 나와야 합니다. 예) Input: "1+1i", "1+1i" Output: "0+2i" (1 + i) * (1 + i) = 1 + i + i + i^2 = 2i 2i를 복소수 형태로 바꾸면 0+2i. Input: "1+-.. 2021. 10. 6.
[Algorithm 012] JS - reverseString Q. 문자로 구성된 배열을 input으로 전달하면, 문자를 뒤집어서 return 해주세요. 새로운 배열을 선언하면 안 됩니다. 인자로 받은 배열을 수정해서 만들어주세요. A. 답 const reverseString = s => { return s.reverse() }; reverseString(["h","e","l","l","o"]) //[ 'o', 'l', 'l', 'e', 'h' ] 2021. 10. 5.
[Algorithm 011] JS - topK Q. nums는 숫자로 이루어진 배열입니다. 가장 자주 등장한 숫자를 k 개수만큼 return해주세요. nums = [1,1,1,2,2,3] k = 2 return [1,2] nums = [1] k = 1 return [1] A. 답 nums = [1,1,2,2,2,3]; k = 2; function topK(nums, k) { const obj = {}; nums.forEach((x) => { if(obj[x]) { obj[x] = obj[x] + 1; }else{ obj[x] = 0 + 1; } }); let arr = Object.values(obj).sort((a, b) => b - a).slice(0, k); const result = []; for(i = 0; i < arr.length;i++.. 2021. 10. 3.
[Algorithm 010] JS - moreThanHalf Q. 숫자로 이루어진 배열인 nums를 인자로 전달합니다. 숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요. 예를 들어, nums = [3,2,3] return 3 nums = [2,2,1,1,1,2,2] return 2 조건 : nums 배열의 길이는 무조건 2개 이상 A. 처음 답 function mortThanHalf (nums) { let obj = {}; nums.forEach((x)=>{ obj[x] = (obj[x] || 0)+1; }) const value = Object.values(obj).sort((a,b) => {return b - a})[0]; const max = Object.keys(obj).filter((a)=>obj[a]===v.. 2021. 10. 2.
[Algorithm 009] JS - romanToNum Q. 로마자에서 숫자로 바꾸기 1~3999 사이의 로마자 s를 인자로 주면 그에 해당하는 숫자를 반환 Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 로마자를 숫자로 읽는 방법은 로마자를 왼쪽부터 차례대로 더하면 됨 III = 3 XII = 12 XXVII = 27 그런데 4를 표현할 때는 IIII가 아니라 IV 뒤의 숫자에서 앞의 숫자를 빼주는 형식 예) 9는 IX I는 V, X앞에 와서 4, 9 X는 L, C앞에 와서 40, 90 C는 D, M앞에 와서 400, 900 처음 접근 법 function romanToNum(s) { const symbolArr= ['I', 'V', 'X', 'L', 'C', 'D', 'M']; const numValue = [1, .. 2021. 9. 27.
[Algorithm 008] JS - 1주차 test 다시 풀기 ✔️ 3주차에 1주차 시험문제 다시 풀어보기 - getGender 인자로 사람에 대한 정보가 담긴 객체를 받습니다. 그 중 성별을 반환하는 함수를 만들어주세요. input 예시 : { name: 'tom', age: 30, gender: 'male' } input 예시 : { name: 'tom', age: 30, gender: 'male' } // test objects let inputValue = { name: 'tom', age: 30, gender: 'male' } // 답 function getGender(person) { return person.gender } getGender(inputValue) // 'male' Dot Notation(object.key)을 이용해 value값을 구함... 2021. 9. 23.
[Algorithm 007] JS - sameReverse Q. 숫자인 num을 인자로 넘겨주면, 뒤집은 모양이 num과 똑같은지 여부를 반환 num: 숫자 return: true or false (뒤집은 모양이 num와 똑같은지 여부) 예를 들어 num = 123 return false // 321 num = 1221 return true // 1221 num = -121 return false // 121- num = 10 return false // 01 처음 접근 방법 const sameReverse = num => { let txt = num.toString(); let arr = txt.split(''); // [ '1', '2', '3' ] let arrRevere = txt.split(''); arrRevere.reverse(); // [ '3',.. 2021. 9. 16.