본문 바로가기

D.evelop [CS]/Algorithm35

[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.
[Algorithm 006] JS - reverse Q. reverse 함수에 정수인 숫자를 인자로 받습니다. 그 숫자를 뒤집어서 return해주세요. 결과 예) x: 1234 return: 4321 x: -1234 return: -4321 x: 1230 return: 321 A. 우리 팀 답 const reverse = x => { let arr = x.toString().split(''); console.log(arr) if (arr[0] === '-'){ arr.shift() arr.reverse(); arr.unshift('-') }else{ arr.reverse(); } return parseInt(arr.join("")) } console.log(reverse(1234)) Array.reverse() : 배열의 순서를 반전해주는 매서드 (MDN.. 2021. 9. 14.
[Algorithm 005] JS - twoSum Q. twoSum함수에 숫자배열과 '특정 수'를 인자로 넘기면, 두 값을 더해서 '특정 수(target)'가 나오는 index를 배열에 담아 return하기 nums: 숫자 배열 target: 두 수를 더해서 나올 수 있는 합계 return: 두 수의 index를 가진 숫자 배열 # target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정 예) nums = [4, 9, 11, 14] target = 13 위의 값이 주어질 경우 nums[0] + nums[1] = 4 + 9 = 13 이므로 [0, 1]이 return 되어야 함 A. 우리 팀 답 const twoSum = (nums, target) => { const arr = [] for( i = 0 ; i < nums.length ;.. 2021. 9. 14.
[Algorithm 004] JS - 주어진 문자열에서 문자의 인덱스 찾기 Q. 주어진 문자열에서 첫 번째 'a'의 index찾기 조건 1 : 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환 조건 2 : indexOf 함수를 사용하지 말것 //주어진 문자열 const output = getFind('a', 'I am a hacker') A. 처음 제출한 답 function getFind(filter, sentence) { let arr = sentence.split(""); let result = sentence.includes('a') if ( result === true ){ return result } else { return -1 } } // true 먼저 split 메서드를 사용해 sentence값으로 들어오는 'I am a hacker'문자열을 쪼개어 배열로 .. 2021. 9. 11.