JavaScript - LeetCode Random Algorithm Test(16)

먹보·2023년 4월 7일
0
post-thumbnail

1. Self Dividing Numbers (No.0728)

문제 설명

A self-dividing number is a number that is divisible by every digit it contains.

  • For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0.

A self-dividing number is not allowed to contain the digit zero.
Given two integers left and right, return a list of all the self-dividing numbers in the range [left, right].

해석

어떤 수가 주어지고 그 수가 만약 자신의 모든 자릿수로 나눠질 수 있으면 그 숫자를 'Self-Dividing Number'이라고 합니다.

두 개 의 숫자 left와 right가 주어졌을 때 그 사이에 있는 숫자들 중 'Self-Dividing Number'를 찾아 배열에 담아 반환하세요.

예제

코드

function selfDividingNumbers(left: number, right: number): number[] {
  const selfDividingNum = [];
  
  for(let i = left ; i <= right ; i++){
    
    const numStr = i.toString();
    
    if(!numStr.includes('0')){
      let remainder = [];
      for(let j = 0 ; j <numStr.length ; j++){
        remainder.push(i % Number(numStr[j])) 
      }
      if (remainder.every((el)=> el === 0)) selfDividingNum.push(i)
    }
  }
  return selfDividingNum
};

🗒️코멘트

코드만 봐도 알겠지만 정말 직관적으로 접근했다.

그렇기 때문에

if (remainder.every((el)=> el === 0)) selfDividingNum.push(i)

이 부분에서 약간 비효율적이라는 생각이든다.

다른 풀이들의 코드를 찾아봤더니 나머지 부분들은 나와 비슷했지만

 if (i % Number(numStr[j]) !== 0) {
        isOk = false;
        break;
      }
    }
    if (isOk) {
      result.push(i);
    }

이러한 조건문을 사용해서 for문을 마무리하는 방식으로 진행하였다.

boolean을 아직까지 제대로 활용을 못하고 있다는 생각이 든다.


2. Squares of a Sorted Array (No.0977)

문제 설명

Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.

해석

정수로 이루어진 배열이 주어졌을 때, 각 요소의 제곱을 한 배열을 오름차순으로 반환하는 함수를 구현해주세요.

예제

코드

function sortedSquares(nums: number[]): number[] {
  return nums.map((el) => Math.pow(el,2)).sort((a,b) => a-b)
};

🗒️코멘트

Piece of Cake


3. How Many Numbers Are Smaller Than the Current Number (No.1365)

문제 설명

Given the array nums, for each nums[i] find out how many numbers in the array are smaller than it. That is, for each nums[i] you have to count the number of valid j's such that j != i and nums[j] < nums[i].
Return the answer in an array.

해석

정수의 배열이 주어졌을 때, nums[i]보다 작은 숫자가 배열내에 몇 개 있는지 반환하는 함수를 구현해주세요.

예제

코드

function smallerNumbersThanCurrent(nums: number[]): number[] {
  const freq = [];
  nums.forEach((el,i) => {
    let count = 0;
    for(let j = 0 ; j < nums.length ; j++){
      if(i !== j && nums[j] < el) count++
    }
    freq.push(count)
  })
  return freq
};

🗒️코멘트

Piece of Cake


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

0개의 댓글