LEETCODE 872. Leaf-Similar Trees
·
Algorithm
Tree 문제에 약하기도 하고 경험이 없어 쉬운 난이도부터풀이를 진행했어요. 문제 자체는 쉬웠지만 다른 분들의 코드를 보며 새로 배운 개념이 있어포스팅하게 되었습니다.문제 접근 root의 left와 right가 존재하지 않는 요소가 마지막 node이므로마지막 node라면 배열에 추가를 해준 후, root1의 node를 담는 배열과root2의 node를 담는 배열을 비교하면 될 것으로 예상되었습니다.나의 풀이 & 다른 풀이 첫 풀이 각 결과를 담는 배열들을 문자열로형변환을 통해 비교를 했는데요. 순서가 다를 시에도 true 값으로 결과가 발생하는 케이스가 존재해테스트 케이스에서 실패했습니다.var leafSimilar = function(root1, root2) { const arr1 = [], ar..
Leetcode 2570. Merge Two 2D Arrays by Summing Values
·
Algorithm
주어진 2개의 이차원 배열 내부의 요소인 배열의 [0]번째 값이 서로 같다면 더하고,다르다면 배열 요소를 그대로 추가하는 문제.첫번째 문제 접근처음엔 filter로 접근해 문제를 해결해보려고 했습니다.filter와 forEach를 사용해 배열의 [0]번째 값이 같은 케이스는 처리했지만값이 다른 케이스를 처리하지 못해 해당 코드를 폐기했습니다.// 처음 접근 코드/** * @param {number[][]} nums1 * @param {number[][]} nums2 * @return {number[][]} */ var mergeArrays = function(nums1, nums2) { const output= []; const c = nums1.filter(num1Arr => ..
Leetcode 2643. Row With Maximum Ones
·
Algorithm
1이 제일 많은 행과 1의 개수를 배열로 리턴하는 문제.1의 개수가 같은 행이 여러 개라면, 행 번호가 가장 작은 행을 선택해야 합니다.문제 접근행과 개수를 구하는 것이 목적이므로 해당 변수들에 값을 할당해 주면 됐습니다.1이 포함된 행을 찾기 위해 filter 메서드를 사용했고이전 배열의 1의 개수와 현재 배열의 1의 개수를 비교해개수가 동일하거나, 아니면 1을 더 많이 가지고 있는 배열을매번 비교를 통해 설정해 줄 필요가 있어 반복문을 사용했습니다.문제 해결/** * @param {number[][]} mat * @return {number[]} */var rowAndMaximumOnes = function(mat) { let count=0, row=0; for(let i=0; i ..
Leetcode 2843. Count Symmetric Integers
·
Algorithm
low와 high에서 대칭되는 값이 몇 개인지 구하는 문제였습니다.가장 먼저 고려했던 것은 대칭 유무를 어떻게 구분하는 것인가였는데요. example 2를 보며 유사성을 찾았습니다. Example 2:Input: low = 1200, high = 1230Output: 4Explanation: There are 4 symmetric integers between 1200 and 1230: 1203, 1212, 1221, and 1230. 숫자를 중간을 기준으로 나눠 왼쪽값과 오른쪽 값이라고 예를 들었을 때,왼쪽 값의 합과 오른쪽 값의 합은 같다는 특징이 있었어요.low부터 high의 수를 어떻게 나누고 값으로 산출해내느냐가 관건이었습니다.문제 접근1) 주어진 수의 범위가 넓어 for문을 사용하는 것이 맞는..
LEETCODE 1002. find-common-characters
·
Algorithm
문자열 배열이 주어지면 단어 내의 모든 문자열에 나타나는모든 문자의 배열을 반환하는 문제. Example 1:Input: words = ["cool","lock","cook"]Output: ["c","o"]문제 접근모든 문자열에 공통되는 단어라면 어떠한 문자열을 기준 삼아도 됐지만배열의 첫번째 문자열이 문제를 풀 때 편하겠다 싶어  첫 문자열을 변수에 할당했습니다. 두 번째로 요소마다 공통 문자를 찾아야 했는데요.의미 없이 반복문을 여러 번 사용해서 찾기보단 JS의 every라는 메서드를 사용해 처리했습니다.가독성도 좋고, 훨씬 효율적이니까요! 이후 공통 문자가 있다면 return 할 배열에 추가해 주는 것으로 해결하려고 했습니다만테스트를 통과하지 못했는데요.첫 번째 문자열에 공통 문자가 2개이고, 다른..
LEETCODE 2331. Evaluate Boolean Binary Tree
·
Algorithm
사실 설명만 보고선 이해가 안됐는데요.예제 문제 01번과 맨 아래의 부연 설명을 보고서야 어렴풋이 이해할 수 있었습니다.문제 접근 방법정확한지 아닌지는 솔직히 장담을 못한 채로 풀었습니다.root를 트리에 비교해보면 0 = False, 1 = True, 2 = OR, 3 = AND를 의미한다는 것을 파악했습니다. 문제를 분석해보면 2는 OR를 뜻하므로 왼쪽 node와 오른쪽 node 둘 중 하나만 있어도 되고,3일 때는 AND이므로 왼쪽 node와 오른쪽 node가 모두 있어야겠네요.최종 코드/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 :..
LEETCODE 824. Goat Latin
·
Algorithm
/** * @param {string} sentence * @return {string} */var toGoatLatin = function(sentence) { const arr = ['a', 'e', 'i', 'o', 'u']; const a = sentence.split(' '); return a.map((word, i) => arr.includes(word[0].toLowerCase()) ? [...word, 'ma', ...Array(i + 1).fill('a')].join('') : [...word.slice(1), word[0], 'ma', ...Array(i + 1).fill('a')].jo..
LEETCODE 1624. Largest Substring Between Two Equal Characters
·
Algorithm
오늘 알고리즘은 의아했습니다.물론 제가 개념을 완벽히 몰라서 이해하지 못한거겠지만 말이죠.문제 설명주어진 문자열에서 같은 두 문자 사이에 있는 문자열의 길이를 리턴하는 문제였습니다.같은 두 문자열이 없다면 -1을 리턴하고!첫번째 답안/** * @param {string} s * @return {number} */var maxLengthBetweenEqualCharacters = function(s) { let num = -1; for(let i=0; i보이..십니까?저는 해당 코드를 작성하고 무조건 됐다! 라고 생각했습니다.하지만 테스트 결과 Wrong Answer를 보게 되었는데요.같은 두 문자가 존재할 땐 테스트 케이스가 pass지만,중복되어지는 문자가 없을 땐 문자열의 끝에 있는 알..