본문 바로가기

D.evelop [CS]52

[Algorithm 015] JS - maxProfit Q. prices는 배열이며, 각 요소는 매일의 주식 가격입니다. 만약 한 번만 거래할 수 있다면 = 사고 팔 수 있다면, 제일 큰 이익은 얼마일까요? 설명: 2일(가격=1)에 샀다가 5일(가격=6)에 사는 것이 6-1이라 제일 큰 수익 7-1=6 은 안 되는거 아시죠? 먼저 사야 팔 수 있습니다. Input: [7,1,5,3,6,4] Output: 5 설명: 여기서는 매일 가격이 낮아지기 때문에 거래가 없습니다. 그래서 0 Input: [7,6,4,3,1] Output: 0 A. 답 const maxProfit = prices => { const arr = []; for ( i = 0 ; i < prices.length ; i++ ){ for ( j = 1 ; j < prices.length ; j++.. 2021. 10. 12.
[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.