Bleeding edge

[LeetCode] 2126. Destroying Asteroids - 자바스크립트 0621 본문

코딩테스트 공부

[LeetCode] 2126. Destroying Asteroids - 자바스크립트 0621

codevil 2022. 6. 21. 13:09

https://leetcode.com/problems/destroying-asteroids/

 

Destroying Asteroids - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

개인적으로는 easy로 문제 난이도가 아닌가 싶다. 아까 풀었던 easy문제가 더 어려웠던거 같다.

이 문제는, 주어진 asteroids를 순서대로 배치하고 mass에 부딫히는데, mass가 asteroids에 충돌할 때마다 asteroids만큼 mass가 커진다. 이때 mass가 막 충돌할 asteroids보다 작다면 return false 그리고 모두 통과하였다면 return true를 하면 된다.

1. nowMass를 선언하고, asteroids를 크기순으로 정렬한다

    let nowMass = mass
    const sortedArr = asteroids.sort((a, b) => a - b)

2. 위에 이야기 한대로, mass보다 asteroids가 크면 false, 그렇지 않으면 지금 mass에 충돌한 것을 더한다

    for (let i = 0; i < asteroids.length; i++) {
        if (asteroids[i] > nowMass) {
            return false
        } else {
            nowMass += asteroids[i]
        }
    }

 

전체풀이

var asteroidsDestroyed = function (mass, asteroids) {
    let nowMass = mass
    const sortedArr = asteroids.sort((a, b) => a - b)
    for (let i = 0; i < asteroids.length; i++) {
        if (asteroids[i] > nowMass) {
            return false
        } else {
            nowMass += asteroids[i]
        }
    }
    return true
};

이 문제에서 고민하게 된 것은 문제 풀이 자체에 대한 것보다, 언제 function으로 더 쪼개는가? 에 대해서 고민을 더한 것 같다. 우선 function을 쪼개는 것은, 한줄로 해결되는 경우엔 굳이 function을 하지 않을까! 그러나, 너무 많이 나오는 방법 같은 경우엔, 또 function으로 쪼개는게 나을꺼같다.