IT 지식

[TIL]Day 26. 간단한 js 내장 객체 : math (feat. code kata)

느루늘품 2020. 10. 16. 11:15
728x90

오늘은 자바스크립트에서 지원하는 내장 객체인 Math와 그 메소드들에 대해 알아보도록 하겠습니다.

 

1. Math 

 

더보기

Math는 수학적인 상수와 함수를 위한 속성과 메서드를 가진 내장 객체입니다. 함수 객체가 아닙니다.

Math는 Number 자료형만 지원하며 BigInt와는 사용할 수 없습니다(from MDN).

 

Math는 자바스크립트에서 기본적으로 지원해주는 표준 내장객체입니다. Math 를 활용하여 길게 표현해야 하는 문법들을 보다 간단하게 줄일 수 있다는 장점이 있습니다. 그 활용도는 코딩테스트와 같은 알고리즘 문제 풀이에서도 활용될 수 있지만, 물리법칙을 활용한 알고리즘이 필요한 영역에서도 사용할 수 있습니다. 자바스크립트 응용 어플리케이션을 만들 때 유용하게 활용할 수 있다는 뜻이 되겠네요.

 

2. Math 내장 메소드

 

Math 객체 안에는 다양한 메소드 들이 들어 있습니다. 여기서 그 전부를 다루기보다는 그 중에서 특히 많이 쓰일 법한 것들을 추려서 말씀드리도록 하겠습니다.

 

1) Math.abs(x)

숫자의 절댓값을 반환합니다.

 

2)Math.ceil(x)

인수보다 크거나 같은 수 중에서 가장 작은 정수를 반환합니다.

 

3) Math.floor(x)

인수보다 작거나 같은 수 중에서 가장 큰 정수를 반환합니다.

 

4) Math.max([x[, y[, …]]])

0개 이상의 인수에서 제일 큰 수를 반환합니다.

 

5) Math.min([x[, y[, …]]])

0개 이상의 인수에서 제일 작은 수를 반환합니다.

 

6) Math.random()

0과 1 사이의 난수를 반환합니다.

 

7) Math.random()

0과 1 사이의 난수를 반환합니다.

 

8) Math.trunc(x) 

숫자의 정수 부분을 반환합니다.

 

 

3. code kata 문제 예시

 

* 문제
인자인 height는 숫자로 이루어진 배열입니다.
그래프로 생각한다면 y축의 값이고, 높이 값을 갖고 있습니다.

아래의 그래프라면 height 배열은 [1, 8, 6, 2, 5, 4, 8, 3, 7] 입니다.

* 가정
배열의 길이는 2이상입니다.
//나의 답안

function getMaxArea(height) {
  let maxArea = 0;
  let resultArr = [];
  
  for (i = 0; i < height.length; i++) {
    for (j = i; j < height.length; j++) {
      const heightValue = height[i] > height[j] ?  height[j] : height[i];
      const widthValue = j - i;
      resultArr.push(heightValue * widthValue);
    }
  }
  resultArr.sort((a, b) => b - a);
  
  maxArea = resultArr[0];
  
  return maxArea
}
// 예시 답안

function getMaxArea(height) {
    let size = 0;
    
    for (let i = 0; i < height.length; i++) {
        for (let j = i+1; j < height.length; j++) {
            size = Math.max(Math.min(height[i], height[j]) * (j-i), size);
        }
    }
    
    return size;
}

 

 

저는 문제에서 요구하는 두 값 중 작은 값을 구하기 위해 삼항 연산자를 사용했습니다만, 예시 답안에서는 이를 Math.min이라는 Math의 내장 메소드를 활용하여 손쉽게 구했습니다. 또 여러 값들 중 가장 큰 값을 구하기 위해 저는 배열을 만들고 그 안에서 여러 값들을 정렬하고 큰 값을 구하는 방식으로 접근했지만, 예시 답안에서는 Math.max라는 방식으로 더 간단하게 구하는 모습입니다. 

 

4. 마무리

 

몇몇 코딩 테스트에서는 이런 간단한 메소드를 사용하지 않고 return값을 도출하라는 조건이 붙기도 한다고 합니다. 그럴 때에는 이런 알고리즘을 직접 생각하는 것이 더 좋은 방식일 수 있겠으나, 일상에서 코딩하는 상황이라면 보다 편한 방법을 사용하는 것이 훨씬 좋으니까 이런 메소드들이 있다는 것을 알아두는 것도 우리가 다양한 코드를 작성하는데 더 도움이 될 것입니다. 

 

오늘도 어제보다 좀 더 성장하는 개발자가 되시길 바랄게요!! 

 

728x90