-
[TIL]Day 26. 간단한 js 내장 객체 : math (feat. code kata)IT 지식 2020. 10. 16. 11:15728x90
오늘은 자바스크립트에서 지원하는 내장 객체인 Math와 그 메소드들에 대해 알아보도록 하겠습니다.
1. Math
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'IT 지식' 카테고리의 다른 글
[TIL]Day 28. CSS grid를 정리해보자! (0) 2020.10.25 [TIL] Day 27. 무한 스크롤 기능 구현하기(in React) (0) 2020.10.24 [TIL]Day 25. map, sort, slice 에 관하여 (in javascript, feat.code kata) (0) 2020.10.15 [TIL]Day 24. map, reduce 메소드에 관하여 in javascript (0) 2020.10.13 [TIL]Day 23. 마크다운에 대하여 (0) 2020.10.08