Knowledge Map
문제 [여기]중복된 문자열을 2개씩 지우고 가장 줄여진 문자열을 반환하는 함수를 만드는 문제이다. 예를 들면 문자열 aaabccddd 가 있을 경우 abccddd => abddd => abd 이런식으로 만들면 된다. 삭제되는 문자열의 순서는 상관없다.즉 aabcc가 있다면 aab, bcc 둘다 상관없다. 또한 bddb의 경우 bddb => bb => "" 가 된다. 만약 문자열이 없다면 Empty String을 반환하면 된다. 풀이// 실행 함수const super_reduced_string = s => A(s) || 'Empty String'; // 문자열 체크 및 삭제해주는 함수const A = str => { for(let i = 1; i
문제는 영어로 되어 있는데 내맘대로 해석을 했다. 원문은 [여기] 참조하면 된다.문제a라는 배열의 최소공배수를 가지고 b라는 배열의 최소값에 이르기 까지 총 개수가 몇개인지 구하시오.예를 들어서 a = [2, 4] 이고 b = [8, 16, 24] 이면 값은 2가 되는데 a 배열의 최소공배수는 4이고 b의 최소값이 8까지는 4, 8 이기 때문에 총 값이 2이다.풀이 // getTotalX( [2,4], [8, 16, 24] ); 이렇게 동작시키는 함수const getTotalX =(a, b) => calculateCommonDenominator(LCM(a), b); // a의 최소공배수(lcm)를 가지고 arr의 최소값까지의 갯수를 구한다.const calculateCommonDenominator = (..
테스트 코드는 다음과 같다. http://jsben.ch/oApXB var a = [[1,2,3,4],[5,6,7,8],[11,12,13,14],[15,16,17,18]]var b = [[21,22,23,24],[35,36,37,38],[41,42,43,44],[45,46,47,48]]cs /**************************************** case 1 ****************************************/var r = [[],[],[],[]];r[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0] + a[0][2] * b[2][0] + a[0][3] * b[3][0];r[0][1] = a[0][0] * b[0][1] + a[0][..
달팽이 모양으로 배열을 만들고 그것을 1차원 배열로 반환하는 문제이다. 이것을[[1,2,3],[8,9,4],[7,6,5]] 이런식으로 바꾸는 것이다.[1,2,3,4,5,6,7,8,9] 1234567891011121314151617function snail(array) { if(array.length 0) { switch(check) { case 0: result.push(...array.shift()); break; case 1: for(var i = 0; i -1; i--) result.push(array[i].shift()); break; } check = check > 3 ? 0 : check+1; } return result;}Colored by Color Scriptercs
https://www.codewars.com/kata/two-arrays-zero-rows-and-zero-columns 자세한 문제 및 테스트는 위의 주소에 가서 하면 된다. 문제 자체는 단순하다. 2개의 2차원 배열을 주고 그 배열의 합의 결과로 나오는 배열에서 내부 값이 전부 0인 행과 열의 갯수을 구하면 된다. 처음에는 별생각 없이 2개의 배열의 합으로 나오는 배열을 하나 만든 다음에 거기서 0을 체크하는 방식으로 했다. 그렇게 만들어서 테스트를 했더니... 너무 느린 코드라고 피드백이 왔다. 그래서 체크 항목을 거의 없다 시피해서 했는데도 느리다고 나왔다. 결국 두 배열의 합으로 만들어지는 배열과 관련된 로직이 느리다는 이야기였다. 두 배열의 합으로 만들어지는 배열 생성로직을 삭제하고, 두 배열..