풀이🙎🏻♂️ function solution(nums) { const numsSetSize = new Set(nums).size; const numsHalfCount = nums.length / 2; return numsSetSize > numsHalfCount ? numsHalfCount : numsSetSize; } /* (풀이) 주어진 배열을 Set 객체로 변환하여 중복을 제거해주고 numsSetSize가 nums의 개수 / 2 보다 많으면 nums.length의 절반인 numsHalfCount를 리턴해주고 아니면 numsSetSize를 리턴해준다. 솔직히 또 히든케이스가 있다던가 해서 실패할 줄 알았는데 통과됐다. 테스트의 이름을 보니 해시인데 관련 자료를 찾아보니 해시는 임의의 길이의 데이터를..
                    전체 글
풀이 🙎🏻♂️ function solution(sizes) { const maxSizes = Math.max(...sizes.flat()); let secondMaxSizes = 0; for (el of sizes) { if (el[0] > el[1]) { if (el[1] > secondMaxSizes) { secondMaxSizes = el[1]; } } else { if (el[0] > secondMaxSizes) { secondMaxSizes = el[0]; } } } return maxSizes * secondMaxSizes; } 불필요한 if 문이 많아보인다.. 피드백 function solution(sizes) { const maxSize = Math.max(...sizes.flat());..
                     
                    스택 (stack) 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)이다. 맨 위쪽 아이템을 top이라 한다. 자료를 넣는것을 push, 넣어둔 자료를 꺼내는 것을 pop이라 한다. pop시 꺼내지는 자료는 가장 최근에 push한 자료부터 나오게 된다. 보통 스택은 위가 뚫린 비커 이미지를 상상하면 편하다. 스택이 꽉차면 Stack Overflow , 비어있는 상태를 Underflow라 한다.
                    Learned Array.from에 대해 조금 더 이해했다. 재귀함수에 대해 배웠다. 자료구조 스택 / 큐에 대해 배웠다. Liked 구글링이 아닌 내 머리로 한주 문제를 다 풀었다. 스택/큐에 대해 정리하며 이해도가 올랐다. Lacked 변수 키워드 실수. 문제풀이에 걸리는 시간이 길다. 할게 많아서 정리를 미루게 된다.
                    풀이 🙎🏻♂️ function solution(s) { const strArr = s.split(" "); let result = ""; for (let i = 0; i < strArr.length; i++) { for (let j = 0; j < strArr[i].length; j++) { result += !(j % 2) ? strArr[i][j].toUpperCase() : strArr[i][j].toLowerCase(); } if (i < strArr.length - 1) { result += " "; } } return result; } /* (풀이) 히든케이스 해결에 정말 많은 시간을 버렸다.. 2중 for문으로 split으로 나눠준 strArr 배열요소의 개수만큼 돌려주고 내부 for문에서..
                     
                    풀이 🙎🏻♂️ function solution(arr) { return arr.filter((el, idx) => el !== arr[idx + 1]); } 해당 문제는 스택/큐 자료구조를 이용해 푸는 풀이였는데 풀이자체는 좋지만 문제의도에 맞지않다. 의도에 맞는 풀이에 대해 알아보자. 문제 의도에 맞는 풀이 function solution(arr) { const result = []; for (const el of arr) { const lastElement = result[result.length - 1]; if (lastElement !== el) result.push(el); } return result; } 스터디 리더님이 올려주신 풀이. 스택 구조를 가진 풀이다. 나는 요소를 빼고 넣는 작업..
                     
                    큐 (Queue) FIFO(First In First Out) 을 기준으로 만들어진 자료구조다. ( 먼저 들어온 데이터가 먼저 나간다 ) 데이터의 삽입하는 부분은 rear 삭제하는 부분을 fornt 라 부른다. 큐의 종류는 선형 큐(Linear Queue), 원형 큐(Circular Queue) 등이 있다. 데이터를 집어넣는 enqueue, 데이터를 추출하는 dequeue 등의 작업을 할 수 있다. 큐는 순서대로 처리해야 하는 작업을 임시로 저장해두는 버퍼(buffer)로 많이 사용한다. 자바스크립트에서 push, shift로 구현이 가능하나 shift의 시간 복잡도는 최대 O(n)이니 주의하자. const arr = []; //enqueue arr.push('test1'); arr.push('test2..
                     
                    풀이 🙎🏻♂️ function solution(n, m) { return [maxAcommonDivisor(n, m), (n * m) / maxAcommonDivisor(n, m)]; } function maxAcommonDivisor(a, b) { let remainder = 0; while (b !== 0) { remainder = a % b; a = b; b = remainder; } return a; } /* (풀이) 최대공약수를 구하는 함수를 만들어준다. 함수는 나머지 값을 넣어주는 변수하나를 생성해주고 while 문으로 b가 0이 되면 탈출하게 되는데 이유는 (a가 작을경우) remainder = a 가 그대로 들어감 a = b a보다 큰값인 b가 들어감 b = remainder 나머지값이 ..