codekata
[CodeKata] getMaxArea 함수 구현하기
[CodeKata] getMaxArea 함수 구현하기
2022.05.22문제 인자인 height는 숫자로 이루어진 배열이다. 그래프로 생각한다면 y축의 값이고, 높이 값을 가지고 있다. 아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7]이다. 저 그래프에 물을 담는다고 생각하고, 물을 담을 수 있는 가장 넓은 면적의 값을 반환하라. 풀이 function getMaxArea(height) { let size = 0; for(let i=0; i
[CodeKata] topK 함수 구현하기
[CodeKata] topK 함수 구현하기
2022.05.21문제 nums는 숫자로 이루어진 배열이다. 가장 자주 등장한 숫자를 k갯수만큼 return해 주세요. ex. nums = [1, 1, 1, 2, 2, 3]; k = 2; // return : [1, 2] nums = [1]; k = 1; // return [1] 풀이 function topK(nums, k) { let obj = {}; nums.map(num => { if(obj[num]){ obj[num] = obj[num]+1 } else { obj[num] = 1 } }) let objSort = Object.keys(obj).sort((a,b) => {return obj[b]-obj[a]}); return objSort.slice(0, k).map(e => Number(e)); } 객체 만들기 o..
[CodeKata] isValid 함수 구현하기
[CodeKata] isValid 함수 구현하기
2022.05.19문제 isValid는 여러 괄호들로 이루어진 String 인자를 받는다. 인자가 유효한 표현인지 아닌지 true/false로 반환해주세요. 종류는 (, ), [, ], {, }으로 6개 있다. 한 번 괄호를 시작했으면, 같은 괄호로 끝나야 하며 괄호 순서가 맞아야 한다. () → true ()[]{} → true (] → false ([)] → false {[]} → true 풀이 function isValid(s) { if(s.length % 2) { return false; } // 홀수는 무조건 false const bracket = { "(": ")", "{": "}", "[": "]" } const ref = []; for(let i=0; i
[CodeKata] moreThanHalf 함수 구현하기
[CodeKata] moreThanHalf 함수 구현하기
2022.05.17문제 숫자로 이루어진 배열인 nums를 인자로 전달한다. 숫자중에서 과반수가 넘은 숫자를 반환해주세요. nums 배열의 길이는 무조건 2개 이상으로 가정한다. ex. nums = [3, 2, 3] => return 3 nums = [2, 2, 1, 1, 1, 2, 2] => return 2 function moreThanHalf(nums) { const result = {}; nums.map(item => { if(result[item]) { return result[item] = result[item] + 1; } else { return result[item] = 1; } }) for(let i in result) { if(result[i] > (nums.length/2)) { return Numbe..
[CodeKata] romanToNum 함수 구현하기
[CodeKata] romanToNum 함수 구현하기
2022.05.16문제 로마자에서 숫자로 바꾸기 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로 표현한다. IV=4, IX=9, XL=40, XC=90, CD=400, CM=900 const roman = { 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000 } const romanToNum = (r..
[CodeKata] getPrefix 함수 구현하기
[CodeKata] getPrefix 함수 구현하기
2022.05.13문제 strs은 단어가 담긴 배열이다. 공통된 시작 단어(prefix)를 반환하기로 한다. 예를 들어 strs=['start', 'stair', 'step'] return은 'st' strs = ['start', 'wework', 'today'] return은 '' const getPrefix = strs => { let prefix = ''; // prefix 없을 경우 ''을 반환한다. let sortStrs = strs.sort(); if(sortStrs.length === 0){ return '' } for(let i = 0; i
[CodeKata] sameReverse 함수 구현하기
[CodeKata] sameReverse 함수 구현하기
2022.05.12문제 숫자 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 => { const nums = parseInt(num.toString().split('').reverse().join('')); return (nums =..
[CodeKata] getLengthOfStr 함수 구현하기
[CodeKata] getLengthOfStr 함수 구현하기
2022.05.11문제 String 형인 str 인자에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환해주세요. str : 텍스트를 반환하는데 중복되지 않은 알파벳 길이(숫자 반환) 예를 들어, str = "abcabcabc"라면, return은 3이다. 왜냐하면 'abc'가 가장 길기 때문이다. str = "aaaaa" retrun은 1이다. 왜냐하면 'a'가 가장 길기 때문이다. str = "sttrg" retrun은 3이다. 왜냐하면 'trg'가 가장 길기 때문이다. 풀이 얼추 for문으로 문자열 하나하나를 비교하며 slice() 메서드를 사용하는 것까지는 접근했지만 도저히 해결할 수 없었다. 그래서 구글에 모범 답안을 가져와서 이해하고 정리하는 시간을 가졌다. const getLengthOfStr ..
[CodeKata] reverse 함수 구현하기
[CodeKata] reverse 함수 구현하기
2022.05.10문제 reverse 함수에 정수인 숫자를 인자로 받는다. 그 숫자를 뒤집어서 return 해주세요. 1. 인자로 1234 숫자가 들어왔다면 4321이라는 숫자를 반환해야 한다. 2. 인자로 -1234 숫자가 들어왔다면 -4321이라는 숫자를 반환해야 한다. 3. 인자로 1230 숫자가 들어왔다면 321이라는 숫자를 반환해야 한다. 풀이 짝이랑 진행한 코드 function reverse(nums) { let numToString = nums.toString(); // 숫자를 문자열로 let arr = numToString.split(''); // 문자열을 배열로 let arrReverse = arr.reverse(); // 배열을 거꾸로 if(arrReverse.includes('-')) { return ..