반응형
🎯 1. 자주 사용되는 Math 함수와 그 이유
다음은 알고리즘 문제에서 자주 등장하는 Math 함수와 많이 사용되는 이유입니다:
함수 | 사용 빈도 | 주요 활용 이유 |
Math.abs() | ★★★★★ | 절댓값 계산: 두 값의 차이 계산, 거리 계산 문제에서 필수적으로 사용됩니다. |
Math.max() | ★★★★★ | 최댓값 구하기: 배열 내 최대값 계산이나 여러 값 중 가장 큰 값 찾기에 사용됩니다. |
Math.min() | ★★★★★ | 최솟값 구하기: 배열 내 최소값 계산이나 여러 값 중 가장 작은 값 찾기에 사용됩니다. |
Math.floor() | ★★★★☆ | 내림값 계산: 정수 연산, 몫 계산, 배수 관련 문제에서 사용됩니다. |
Math.ceil() | ★★★★☆ | 올림값 계산: 나누기 연산 후 올림값을 구하거나 필요한 최소값을 계산하는 문제에서 사용됩니다. |
Math.round() | ★★★☆☆ | 반올림 계산: 평균 구하기, 소수점 정리 문제에서 사용됩니다. |
Math.sqrt() | ★★★☆☆ | 제곱근 계산: 피타고라스 정리, 거리 계산, 원의 반지름 등 기하학 문제에서 자주 사용됩니다. |
Math.random() | ★★★☆☆ | 난수 생성: 무작위 선택 문제, 샘플링 또는 시뮬레이션 문제에서 활용됩니다. |
Math.pow() | ★★☆☆☆ | 거듭제곱 계산: 기하학적 연산, 지수 계산 문제에서 사용됩니다. |
Math.log() | ★☆☆☆☆ | 로그 계산: 지수 함수나 복잡한 수학 문제에서 가끔 사용됩니다. |
🧩 2. 어떤 유형의 문제에서 많이 사용될까?
각 Math 함수는 문제 유형에 따라 자주 사용됩니다. 아래는 대표적인 문제 유형과 주요 함수들입니다:
1️⃣ 거리 계산 문제
- 예시: 두 점 사이의 거리 구하기
- 사용 함수: Math.sqrt(), Math.abs()
// 두 점 (x1, y1), (x2, y2) 사이 거리 계산
const distance = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
2️⃣ 최대/최소 값 문제
- 예시: 배열의 최댓값과 최솟값 구하기
- 사용 함수: Math.max(), Math.min()
const arr = [3, 5, 1, 8, 2];
const maxVal = Math.max(...arr); // 8
const minVal = Math.min(...arr); // 1
3️⃣ 정수 연산 문제
- 예시: 필요한 최소 횟수 계산
- 사용 함수: Math.floor(), Math.ceil()
// 한 번에 K개를 처리할 때 필요한 최소 횟수
const total = 17;
const batchSize = 5;
const minBatches = Math.ceil(total / batchSize); // 4
4️⃣ 난수 생성 문제
- 예시: 무작위로 값 선택하기
- 사용 함수: Math.random()
// 1부터 100 사이의 난수 생성
const randomNum = Math.floor(Math.random() * 100) + 1;
5️⃣ 기하학 문제
- 예시: 삼각형의 면적 계산
- 사용 함수: Math.sqrt(), Math.pow(), Math.PI
// 반지름 r인 원의 넓이
const r = 5;
const area = Math.PI * Math.pow(r, 2); // 78.54
📊 3. 예상 사용 순위
알고리즘 문제에서의 Math 함수 사용 빈도를 추정한 순위는 다음과 같습니다:
- Math.abs()
- Math.max() / Math.min()
- Math.floor() / Math.ceil()
- Math.sqrt()
- Math.random()
- Math.pow()
반응형
'Algorithm' 카테고리의 다른 글
[algorithm 공부] DFS/BFS 쉬운 개념 js 구현 방법 (0) | 2025.01.06 |
---|---|
[알고리즘] 순열과 백트래킹 비교(permutation, backtracking) / 부분 수율 / 전체 순열 (0) | 2024.11.24 |
JS Array prototype 함수의 시간 복잡도 비교(indexOf, concat ...) (0) | 2024.11.23 |
[알고리즘] 경우의 수(순열 / 조합) JS (0) | 2024.11.22 |