JavaScript - LeetCode Beginner's Guide

먹보·2023년 2월 16일
0
post-thumbnail

1. Add Two Integers (No.2235)

문제 설명

Given two integers num1 and num2, return the sum of the two integers.

해석

두 개의 정수가 주어졌을 때, 그들의 합을 반환하는 함수를 구현하세요.

코드

var sum = function(num1, num2) {
    return num1 + num2
};

🗒️코멘트 : NULL

2. Root Equals Sum of Children (No.2236)

문제 설명

You are given the root of a binary tree that consists of exactly 3 nodes: the root, its left child, and its right child. Return true if the value of the root is equal to the sum of the values of its two children, or false otherwise.

해석

루트와, 왼쪽과 오른쪽의 자식을 둔 정확히 3개의 노드로 구성되어 있는 이진 트리가 주어졌을 때, 두 개의 자식의 합이 부모 즉 루트와 같을 경우 true를 다를 경우 false를 반환하는 함수를 구현하세요.

코드

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {boolean}
 */
var checkTree = function(root) {
    return (root.left.val+root.right.val) === root.val ? true : false
};

🗒️코멘트 : NULL

3. Running Sum of 1d Array (No.1480)

문제 설명

Given an array nums. We define a running sum of an array as runningSum[i] = sum(nums[0]…nums[i]).
Return the running sum of nums.

해석

숫자로 이루어져있는 배열이 주어졌을 때, runningSum[i]= sum(nums[0]...nums[i]) 조건을 만족하는 배열을 반환할 수 있도록 함수를 구현해주세요.
=> runningSum이란 : 특정 자리 수의 숫자는 이전 자리 수들과 자기 자신의 합으로 만들어지는 것

예제

Input: nums = [1,2,3,4]
Output: [1,3,6,10]
Explanation: Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4].

코드

var runningSum = function(nums) {
    const result = [];
    result.push(nums[0])
    for(let i = 1 ; i < nums.length ; i++){
        result.push(nums[i]+result[i-1])
    }
    return result
};

🗒️코멘트 : NULL

4. Richest Customer Wealth (No.1672)

문제 설명

You are given an m x n integer grid accounts where accounts[i][j] is the amount of money the ith customer has in the jth bank. Return the wealth that the richest customer has.
A customer's wealth is the amount of money they have in all their bank accounts. The richest customer is the customer that has the maximum wealth.

해석

m x n개의 정수들이 배열 안에 m은 예금주의 수, n은 은행의 수라 하고 각 은행의 들어있는 돈을 accounts[i][j]라고 했을 때 각 각의 예금주들이 가지고 있는 재산의 총합을 구한 뒤 그 중 가장 많은 재산을 반환하는 로직을 구현해주세요.

코드

 */
var maximumWealth = function(accounts) {
    const newArr = [];
    
    accounts.forEach((el)=> {
        newArr.push(el.reduce((a,b) => a+b))
    })

    return Math.max(...newArr)
};

🗒️코멘트 : 여러가지 배열 메서드를 사용하기에 좋은 문제

5. Number of Steps to Reduce a Number to Zero (No.1342)

문제 설명

Given an integer num, return the number of steps to reduce it to zero.
In one step, if the current number is even, you have to divide it by 2, otherwise, you have to subtract 1 from it.

해석

숫자가 주어졌을 때, 그 숫자를 0으로 만드는데 까지 몇 단계가 걸리는지 반환하는 함수를 구현해주세요.

각 단계는 숫자가 짝수일 경우 2로 나누고 홀수일 경우 1을 빼주는 식으로 진행되어야 합니다.

코드

var numberOfSteps = function(num) {
  let count = 0
  while(num !== 0){
      if(num % 2 === 0){
          num = num/2;
          count++;
      } else {
          num--;
          count++;
      }
  }
  return count  
};

🗒️코멘트 : NULL

6. Middle of the Linked List (No.876)

문제 설명

Given the head of a singly linked list, return the middle node of the linked list.
If there are two middle nodes, return the second middle node.

해석

단일 Linked List로 된 헤드가 주어졌을 때 그 LinkedList의 중간을 반환하는 함수를 구현해주세요.

코드

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var middleNode = function(head) {
    let slow = head;
    let fast = head;

    while (fast !== null && fast.next !== null) {
        slow = slow.next;
        fast = fast.next.next;
    }
    return slow;
};

🗒️코멘트 : NULL

7. Ransom Note (No.383)

문제 설명

Given two strings ransomNote and magazine, return true if ransomNote can be constructed by using the letters from magazine and false otherwise.
Each letter in magazine can only be used once in ransomNote.

해석

ransomNote와 Magazine이라는 2개의 문자열이 주어졌을 때, 만약 ransomNote가 magazine의 문자로 만들어질 수 있다면 true를 그렇지 않다면 false를 반환하는 함수를 구현해주세요.

코드

var canConstruct = function(ransomNote, magazine) {
    const freq = new Array(26).fill(0); 
        for (let i = 0; i < magazine.length; i++) {
            freq[magazine.charCodeAt(i) - 97]++; 
        }
        for (let i = 0; i < ransomNote.length; i++) {
            const idx = ransomNote.charCodeAt(i) - 97; 
    if (freq[idx] > 0) {
      freq[idx]--; 
    } else {
      return false; 
    }
  }
  return true;
};

🗒️코멘트 : NULL

profile
🍖먹은 만큼 성장하는 개발자👩‍💻

0개의 댓글